2016-11-30 223 views
1

我有一個樣本數據集:輸出GROUPBY到CSV文件熊貓

import pandas as pd 
df = {'ID': ['H1','H2','H3','H4','H5','H6'], 
     'AA1': ['C','B','B','X','G','G'], 
     'AA2': ['W','K','K','A','B','B'], 
     'name':['n1','n2','n3','n4','n5','n6'] 
} 

df = pd.DataFrame(df) 

它看起來像:

df 
Out[32]: 
    AA1 AA2 ID name 
0 C W H1 n1 
1 B K H2 n2 
2 B K H3 n3 
3 X A H4 n4 
4 G B H5 n5 
5 G B H6 n6 

我想GROUPBY AA1和AA2(唯一AA1和AA2對)和它doesn無論哪個ID和名稱值與唯一對一起拾取,並將其輸出到.csv文件,因此.csv文件中的輸出將如下所示:

AA1 AA2 ID name 
    C W H1 n1 
    B K H2 n2 
    X A H4 n4 
    G B H5 n5 

我試圖代碼:

df.groupby('AA1','AA2').apply(to_csv('merged.txt', sep = '\t', index=False)) 

但to_csv不承認,可我放什麼。適用()來只輸出GROUPBY結果到CSV文件?

+0

所以你只是想每一個獨特的'AA1','AA2'對的第一行? –

+0

您指出的行爲不是groupby操作。你是否只保留了一對獨特的AA1-AA2配對?或者你需要在每一對中進行彙總? – 3novak

+0

只保留第一個獨特的AA1 -AA2對 – Jessica

回答

2

問題是您正試圖應用不存在的函數to_csv。無論如何,groupby也沒有to_csv方法。 pd.Seriespd.DataFrame呢。

什麼你應該用的是drop_duplicates這裏,然後導出生成的數據幀到CSV:

df.drop_duplicates(['AA1','AA2']).to_csv('merged.txt') 

PS:如果你真的想要一個GROUPBY的解決方案,有此一說正好是12倍比drop_duplicates慢...:

df.groupby(['AA1','AA2']).agg(lambda x:x.value_counts().index[0]).to_csv('merged.txt') 
0

可以使用groupbyhead

df.groupby(['AA1', 'AA2']).head(1) 

enter image description here