2017-02-23 214 views
2

我試圖循環遍歷由熊貓創建的數據幀,尋找每幀只出現一次的值。到目前爲止我的代碼如下:熊貓:從value_counts循環遍歷數據幀

import pandas as pd 
df = pd.read_csv('xyz.csv') 
saved_column = df['S07'][df['Class'].isin(['GTD'])].round(decimals=1).value_counts() 

我如何遍歷這個數據幀,檢測只出現一次,最終所有的值從CSV文件刪除?

非常感謝您的幫助!

一個例子是: (以CSV文件的輸入數據)

In [2]: df 
Out[2]: Class S07 
     GTD 2.23 
     GTD 2.21 
     GTD 1.82 
     GTD 2.26 

我想要的代碼來刪除與GTD行 - 1.82,因爲它的舍入值(1.8)僅在出現一次數據集。

樣本數據集: https://1drv.ms/u/s!AvuwPSn7axNcePUsJD8kMB1FnlE

+3

您可以發佈樣本數據集和所需的數據集?請閱讀[如何使良好的可重複熊貓示例](http://stackoverflow.com/questions/20109391/how-to-make-good-reproducible-pandas-examples) – MaxU

回答

0

您可以使用duplicated()方法:

In [86]: df 
Out[86]: 
    Class S07 
0 AAA 1.10 
1 AAA 1.11 
2 GTD 2.23 
3 GTD 2.21 
4 GTD 1.82 
5 GTD 2.26 

In [87]: x = df.loc[df.Class.isin(['GTD']), 'S07'].round(1).duplicated(keep=False) 

In [88]: df.loc[df.index[x.index][x]] 
Out[88]: 
    Class S07 
2 GTD 2.23 
3 GTD 2.21 

現在,您可以將結果保存到一個新的CSV文件:

df.loc[df.index[x.index][x]].to_csv('/path/to/file.csv', index=False, ...) 
+0

感謝您的快速回復。但是,我收到以下錯誤消息:提供了不可調整的布爾系列鍵。感謝您的耐心... – Phil

+0

@Phil,我已經更新了我的答案 - 請檢查 – MaxU

+0

真棒,作品像魅力!謝謝! – Phil