簡體   English   中英

輸出groupby到csv文件熊貓

[英]output groupby to csv file pandas

我有一個樣本數據集:

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

我想對AA1和AA2(唯一的AA1和AA2對)進行分組,這與唯一對一起選擇的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無法識別,我可以在.apply()中放入什么才能將groupby結果輸出到csv文件中?

問題是您試圖將一個函數應用到不存在的to_csv 無論如何,groupby也沒有to_csv方法。 pd.Seriespd.DataFrame可以。

您真正應該使用的是drop_duplicates ,然后將結果數據幀導出到csv:

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

PS:如果您真的想要一個groupby解決方案,那么這個解決方案的速度比drop_duplicates慢12倍...:

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

你可以用head groupby

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

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM