[英]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.