在大型python数据框上快速处理数据
问题描述:
我有一个巨大的数据框,其中包含4列和9百万行。比如我MainDataframe有:在大型python数据框上快速处理数据
NY_resitor1 NY_resitor2 SF_type SF_resitor2
45 36 Resis 40
47 36 curr 34
. . . .
49 39 curr 39
45 11 curr 12
12 20 Resis 45
我想有两个dataframes,并将它们保存作为基于SF_type即RESIS和CURR csv文件。 这是我写的
FullDataframe=pd.read_csv("hdhhdhd.csv")
resis=pd.DataFrame()
curr=pd.DataFrame()
for i in range(len(FullDataframe["SF_type"].values)):
if Resis in FullDataframe["SF_type"].values[i]:
resis.loc[i]=FullDataframe[["NY_resitor1", "NY_resitor2", "SF_type","SF_resitor2"]].values[i]
elif curr in in FullDataframe["SF_type"].values[i]:
curr.loc[i]=FullDataframe[["NY_resitor1", "NY_resitor2", "SF_type","SF_resitor2"]].values[i]
resis.to_csv("jjsjjjsjs.csv")
curr.to_csv("jjsj554js.csv")
这是我写的,我一直在运行它在过去的一周,但它仍然是尚未完成。有没有更好更快的方法来做到这一点?
答
用熊猫过滤器而不是for循环会更好。只要坚持使用惯例,我打电话给你FullDataFrame
df
代替:
resis = df[df.SF_type == 'Resis']
curr = df[df.SF_type == 'curr']
然后运行:
resis.to_csv("jjsjjjsjs.csv")
curr.to_csv("jjsj554js.csv")
我不知道你的指数是什么,但如果你不是只使用默认的熊猫指数(即0,1,2,3等),那么你将通过排序你的索引(.sort_index()
方法)来看到性能提升。
当我这样做,我的两个帧是空的。我的df.SF_type是类型对象;所以当我使用==它返回false – user3841581
如果您将它转换为'str'为平等声明怎么办?比如'resis = df [df.SF_type.astype(str)=='Resis']' – dagrha