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

Tom*_*nks 2 python group-by dataframe pandas

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

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

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

然后,我想与 Score 进行分组。

df1.groupby("Score")
Run Code Online (Sandbox Code Playgroud)

我需要这个的输出文件,我尝试过

df1.groupby("Score").to_csv("Score.txt",sep="\t")
Run Code Online (Sandbox Code Playgroud)

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

piR*_*red 6

你问的没有意义。但你可能没有意识到。 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
Run Code Online (Sandbox Code Playgroud)

如果 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
Run Code Online (Sandbox Code Playgroud)

最后按照你的预期将数据输出到文件中

df1.sort_values('Score').to_csv("Score.txt", sep="\t")
Run Code Online (Sandbox Code Playgroud)