在大型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循环会更好。只要坚持使用惯例,我打电话给你FullDataFramedf代替:

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()方法)来看到性能提升。

+0

当我这样做,我的两个帧是空的。我的df.SF_type是类型对象;所以当我使用==它返回false – user3841581

+0

如果您将它转换为'str'为平等声明怎么办?比如'resis = df [df.SF_type.astype(str)=='Resis']' – dagrha