请查看下面的代码,有没有更有效的方法将一个DF分成两个? 在下面的代码中,查询运行两次。 如果只运行一次查询,基本上说如果为真,发送到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