首页 > 解决方案 > 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)]

标签: pythonpandas

解决方案


无需计算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

推荐阅读