我正在尝试为每个特定组返回熊猫df
内的最大值。然后,我想使用此最大值来乘以单独的值,然后在单独的列中返回。
例如,使用下面的df
,Item
中每个组的最大值为:
X = 5
Y = 2
我想使用这些值将所有其他值乘以单独的列。 将熊猫作为pd导入
d = ({
'Item' : ['X','X','X','Y','Y','Y','Y'],
'Count' : [0,2,5,3,1,2,1],
})
df = pd.DataFrame(data = d)
这是我的尝试:
df['Mult_max'] = df.groupby('Item').apply(lambda x: x['Count'].max() * x['Count'])
预期输出:
Group Value Mult_max
0 X 0 0
1 X 2 10
2 X 5 25
3 Y 3 9
4 Y 1 3
5 Y 2 6
6 Y 1 3
答案 0 :(得分:5)
将GroupBy.transform
用于与最大值填充的原始DataFrame
相同的系列:
df['Mult_max'] = df.groupby('Item')['Count'].transform('max') * df['Count']
print (df)
Item Count Mult_max
0 X 0 0
1 X 2 10
2 X 5 25
3 Y 3 9
4 Y 1 3
5 Y 2 6
6 Y 1 3