Я пытаюсь вернуть максимальное значение в пандах 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
Используйте 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
Это было быстро @jezrael. Спасибо
df.groupby('Item')['Count'].apply(lambda x: x.max() * x)
тоже сработает