python - Python Pandas 拆分 DF
问题描述
请查看下面的代码,是否有更有效的方法将一个 DF 一分为二?在下面的代码中,查询运行了两次。只运行一次查询会更快吗,基本上说 if true 发送到 DF1,否则发送到 DF2 ;或者可能在创建 DF1 之后,以某种方式说 DF2 = DF 减去 DF1
代码:
x1='john'
df = pd.read_csv(file, sep='\n', header=None, engine='python', quoting=3)
df = df[0].str.strip(' \t"').str.split('[,|;: \t]+', 1, expand=True).rename(columns={0: 'email', 1: 'data'})
df1= df[df.email.str.startswith(x1)]
df2= df[~df.email.str.startswith(x1)]
解决方案
无需计算df.emailclean.str.startswith(x1)
两次掩码。
mask = df.emailclean.str.startswith(x1)
df1 = df[mask].copy() # in order not have SettingWithCopyWarning
df2 = df[~mask].copy() # https://stackoverflow.com/questions/20625582/how-to-deal-with-settingwithcopywarning-in-pandas
推荐阅读
- c - 如何在 C 中使用 pstree 显示子进程
- hibernate-envers - 是否可以将休眠环境 @Audited 与 r2dbc 一起使用?
- r - 导出/导入 RStudio 用户首选项、全局设置等
- python - 我该怎么做才能使装饰器工作?
- mysql - 当我对主键使用count函数时,它只返回1行,这里有什么问题?
- c# - 如何停止 kendo UI NumericTextBoxFor 四舍五入十进制数
- java - 将串通量拆分为多个通量
- mobx - Mobx 中的动作装饰器在严格模式下不起作用
- c# - 如何让子类中的 PunRPC 方法工作?
- php - 电子邮件联系表单中的 PHP 开关未发送到正确的地址