繁体   English   中英

将pandas groupby操作的输出保存到CSV

[英]Save the output of a pandas groupby operation to CSV

我想问一个关于Pandas groupby的问题。 我正在使用ipython notebook(python3)。

例如,有一个这样的数据框。

df1 = pd.DataFrame( { "Score" : ["A", "B", "C", "A", "B", "A"] ,"Class":
["Physics", "Science", "Chemistry", "Biology", "History", "English"] } )

然后,我想与得分分组。

df1.groupby("Score")

我需要一个输出文件,我试过了

df1.groupby("Score").to_csv("Score.txt",sep="\t")

但这不起作用。 有人知道如何制作输出文件吗?

您的要求没有任何意义。 您可能没有意识到。 groupby创建一个暂存区域,对其执行跨数据组的聚合或转换。 就像,如果我们想计算每个组的观察次数,那将是一个汇总。

因为您认为可以将其输出为某个表,所以我猜您认为groupby实际上将行分组在一起。 如果您从未见过使用过该术语,即使它是不正确的,这也不是不好的解释。 这样做的方法是使用sort_values方法进行排序。

df1.sort_values('Score')

       Class Score
0    Physics     A
3    Biology     A
5    English     A
1    Science     B
4    History     B
2  Chemistry     C

如果Score是尚未按字典顺序排序的其他内容,则可以使用categorical类型为我们处理它。

score = df1.Score.astype('category', categories=list('ABCDF'), ordered=True)
df1.assign(Score=score).sort_values('Score')

       Class Score
0    Physics     A
3    Biology     A
5    English     A
1    Science     B
4    History     B
2  Chemistry     C

最后,将数据按预期输出到文件

df1.sort_values('Score').to_csv("Score.txt", sep="\t")

这是解决方案,我认为这接近您想要的

df1=df1.reset_index()
df1=df1.groupby(['Score','index']).Class.apply(sum).to_frame()
df1

Out[102]: 
                 Class
Score index           
A     0        Physics
      3        Biology
      5        English
B     1        Science
      4        History
C     2      Chemistry

您需要告诉您要按计数,均值或其他分组的内容。

 df1.groupby("Score").count().to_csv('d.csv')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM