特殊情况下的pandas groupby和sum

sg24os4d  于 6个月前  发布在  其他
关注(0)|答案(1)|浏览(82)

我有以下特殊情况:

import pandas as pd

df = pd.DataFrame({
    'x': ['A', 'A', 'E' ,'B', 'B', 'C', 'C'],
    'y': ['m', 'n', 'q', 'm', 'n', 'm', 'n'],
    'z':  [6,   5,  10,   4,   3,    2,   1]
})
print(df)

字符串
我需要groupby x,然后将m和n的值z相加。但删除所有非m和值。
所以输出应该是:

:    x  sum
: 0  A  11
: 1  B  7
: 2  C  3


如何使用groupby获得结果?或其他更好的方法?

jvlzgdj9

jvlzgdj91#

您需要过滤df以删除不是mny值,然后使用agg分组以分配sum列:

out = (df[df['y'].isin(['m','n'])]
    .groupby('x', as_index=False)
    .agg(sum=('z', 'sum'))
)

字符串
输出量:

x  sum
0  A   11
1  B    7
2  C    3

相关问题