gpt4 book ai didi

python - 按数据框中的一列进行分组,但将其中一些组汇总为一组

转载 作者:行者123 更新时间:2023-12-01 01:30:47 27 4
gpt4 key购买 nike

我有一个像这样的 pandas 数据框:

RECEIPT   USD    TYPE
1 10.00 Paper
2 12.00 Digital
3 5.00 Note
4 10.00 Paper
5 12.00 Paper
6 5.00 Digital

如果我按列类型对数据进行分组,我会得到:

balance = df.groupby(['TYPE'])['USD'] \
.agg(['sum', 'count']) \
.reset_index() \
.rename(columns={'sum': 'TOTAL', 'count': 'COUNT'})

TYPE TOTAL COUNT
Digital 17.00 2
Note 5.00 1
Paper 32.00 3

但是,如果我只想获取数字收据的信息,并将其余部分作为一行获取,该怎么办?我知道如何使用原始数据框中的另一列来执行此操作,但也许有一种更优雅的方法来执行此操作。

期望的结果:

   TYPE   TOTAL COUNT
Digital 17.00 2
Remainder 37.00 4

最佳答案

您可以groupby使用 bool 掩码

mask = (df.TYPE=='Digital').map({False: 'Remainder', True:'Digital'})

或者,使用np.where (IMO 是一个更优雅的解决方案)

mask = np.where(df.TYPE=='Digital', 'Remainder', 'Digital')

两者都会产生

df.groupby(mask)['USD'] \
.agg(['sum', 'count']) \
.reset_index() \
.rename(columns={'sum': 'TOTAL', 'count': 'COUNT'})

TYPE TOTAL COUNT
0 Digital 17.0 2
1 Remainder 37.0 4
<小时/>

对于两个以上的组,可以使用np.select作为mask

np.select([df.TYPE == 'Digital', (df.TYPE == 'Paper') | (df.TYPE=='Note'), df.TYPE=='Mail'],
['Digital', 'Paper', 'Remainder']

关于python - 按数据框中的一列进行分组,但将其中一些组汇总为一组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52893965/

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