gpt4 book ai didi

python - 按两列(或更多)对 Pandas 数据框进行分组?

转载 作者:太空狗 更新时间:2023-10-29 18:02:23 25 4
gpt4 key购买 nike

我有以下数据框:

mydf = pandas.DataFrame({"cat": ["first", "first", "first", "second", "second", "third"], "class": ["A", "A", "A", "B", "B", "C"], "name": ["a1", "a2", "a3", "b1", "b2", "c1"], "val": [1,5,1,1,2,10]})

我想创建一个数据框,对具有相同 class id 的项目的 val 列进行汇总统计。为此,我使用 groupby 如下:

mydf.groupby("class").val.sum()

这是正确的行为,但我想在生成的 df 中保留 cat 列信息。那可以吗?以后我是否必须合并/加入该信息?我试过:

mydf.groupby(["cat", "class"]).val.sum()

但这使用了分层索引。我想要一个简单的数据框,它只有每个组的 cat 值,其中分组依据是 class。输出应该是一个包含 cat 和 class 值的数据框(不是系列),其中 val 条目对具有相同 class 的每个条目求和:

cat     class    val
first A 7
second B 3
third C 10

这可能吗?

最佳答案

使用reset_index

In [9]: mydf.groupby(['cat', "class"]).val.sum().reset_index()
Out[9]:
cat class val
0 first A 7
1 second B 3
2 third C 10

编辑

如果要将 cat 设置为索引,请设置 level=1

In [10]: mydf.groupby(['cat', "class"]).val.sum().reset_index(level=1)
Out[10]:
class val
cat
first A 7
second B 3
third C 10

你也可以设置as_index=False来获得相同的输出

In [29]: mydf.groupby(['cat', "class"], as_index=False).val.sum()
Out[29]:
cat class val
0 first A 7
1 second B 3
2 third C 10

关于python - 按两列(或更多)对 Pandas 数据框进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21247992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com