我有一个包含 'x'、'y'、'z' 列的 pandas DataFrame 然而,很多 x 和 y 值都是多余的。我想获取具有相同 x 和 y 值的所有行并对第三列求和,返回一个较小的 DataFrame。 所以给出
x y z
0 1 2 1
1 1 2 5
2 1 2 0
3 1 3 0
4 2 6 1
它会返回:
x y z
0 1 2 6
1 1 3 0
2 2 6 1
我试过了
df = df.groupby(['x', 'y'])['z'].sum
但我不确定如何处理分组对象。
最佳答案
非常接近原样;你只需要调用 .sum()
然后重置索引:
>>> df.groupby(['x', 'y'])['z'].sum().reset_index()
x y z
0 1 2 6
1 1 3 0
2 2 6 1
groupby()
也有一个参数来处理:
>>> df.groupby(['x', 'y'], as_index=False)['z'].sum()
x y z
0 1 2 6
1 1 3 0
2 2 6 1
在你的问题中,你有 df.groupby(['x', 'y'])['z'].sum
没有括号。这只是将 方法 .sum
作为 Python 对象引用,而不调用它。
>>> type(df.groupby(['x', 'y'])['z'].sum)
method
>>> callable(df.groupby(['x', 'y'])['z'].sum)
True
关于python - 通过 groupby 连接 pandas Dataframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51216819/