2015-10-20 80 views
0

我有一個巨大的數據框,其中包含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") 

這是我寫的,我一直在運行它在過去的一週,但它仍然是尚未完成。有沒有更好更快的方法來做到這一點?

回答

0

用熊貓過濾器而不是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