gpt4 book ai didi

python - 如何将 pandas 列与多索引数据帧的一部分相乘

转载 作者:行者123 更新时间:2023-12-01 09:11:12 24 4
gpt4 key购买 nike

我有一个具有多索引和一列的数据框。

索引字段为typeamount,该列称为count

我想添加一个将金额计数相乘的列

df2 = df.groupby(['type','amount']).count().copy()
# I then dropped all columns but one and renamed it to "count"

df2['total_amount'] = df2['count'].multiply(df2['amount'], axis='index')

不起作用。我在 amount 上遇到关键错误。

如何访问多重索引的一部分以在计算中使用它?

最佳答案

使用GroupBy.transform对于与原始 df 大小相同且具有聚合值的 Series,因此可能多个:

count = df.groupby(['type','amount'])['type'].transform('count')
df['total_amount'] = df['amount'].multiply(count, axis='index')
print (df)
A amount C D E type total_amount
0 a 4 7 1 5 a 8
1 b 5 8 3 3 a 5
2 c 4 9 5 6 a 8
3 d 5 4 7 9 b 10
4 e 5 2 1 2 b 10
5 f 4 3 0 4 b 4

或者:

df = pd.DataFrame({'A':list('abcdef'),
'amount':[4,5,4,5,5,4],
'C':[7,8,9,4,2,3],
'D':[1,3,5,7,1,0],
'E':[5,3,6,9,2,4],
'type':list('aaabbb')})

print (df)
A amount C D E type
0 a 4 7 1 5 a
1 b 5 8 3 3 a
2 c 4 9 5 6 a
3 d 5 4 7 9 b
4 e 5 2 1 2 b
5 f 4 3 0 4 b

df2 = df.groupby(['type','amount'])['type'].count().to_frame('count')
df2['total_amount'] = df2['count'].mul(df2.index.get_level_values('amount'))
print (df2)
count total_amount
type amount
a 4 2 8
5 1 5
b 4 1 4
5 2 10

关于python - 如何将 pandas 列与多索引数据帧的一部分相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51638613/

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