用列valu更新pandas groupby group

2024-10-01 13:33:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个这样的测试:

df = pd.DataFrame({'A': ['Apple','Apple', 'Apple','Orange','Orange','Orange','Pears','Pears'],
                    'B': [1,2,9,6,4,3,2,1]
                   })
       A    B
0   Apple   1
1   Apple   2
2   Apple   9
3   Orange  6
4   Orange  4
5   Orange  3
6   Pears   2
7   Pears   1

现在我需要添加一个新列,列“B”中分别有%的差异。这怎么可能呢。我不能让它工作。在

我看过了 update column value of pandas groupby().last() 不确定这是否与我的问题有关。在

这看起来很有希望 Pandas Groupby and Sum Only One Column

我需要找到列maxpercchng(组中的所有行)中每个列'A'中列(B)的最大变化并将其插入到列maxperchng中。 所以我想出了这个代码:

^{pr2}$

试着把它添加到“maxperchng”列中,就像这样

group['maxpercchng'] = grouppercchng

或者像这样

df_kpi_hot.groupby(['A'], as_index=False)['maxpercchng'] = grouppercchng

有人知道如何将maxperchng列添加到组中的所有行吗?在


Tags: ofappledataframedfvalueupdatecolumn差异
1条回答
网友
1楼 · 发布于 2024-10-01 13:33:56

我相信您需要^{}来处理与原始数据帧大小相同的序列,这些数据框由聚合值填充:

g = df.groupby('A')['B']
df['maxpercchng'] = (g.transform('max') - g.transform('min')) /  g.transform('first') * 100

print (df)

        A  B  maxpercchng
0   Apple  1        800.0
1   Apple  2        800.0
2   Apple  9        800.0
3  Orange  6         50.0
4  Orange  4         50.0
5  Orange  3         50.0
6   Pears  2         50.0
7   Pears  1         50.0

或者:

^{pr2}$

相关问题 更多 >