将groupby输出到csv文件pandas

2024-04-29 16:34:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个样本数据集:

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和name值与此无关,并将其输出到一个.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文件?


Tags: 文件csvnameiddfh2h1h4
2条回答

可以将groupbyhead一起使用

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

enter image description here

问题是您试图应用一个不存在的函数to_csv。无论如何,groupby也没有to-csv方法。pd.Seriespd.DataFrame做。

您真正应该使用的是drop_duplicates然后将结果数据帧导出到csv:

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

注:如果你真的想要一个groupby解决方案,有一个比drop_duplicates慢12倍的解决方案…:

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

相关问题 更多 >