Pandas数据帧将整个列乘以另一列中控制组标识的单个单元格

2024-04-19 04:49:11 发布

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

嗨,我正在尝试用python复制一个相当简单的excel公式,但失败了。这是我的数据帧的屏幕截图和我试图执行的F列中的计算:

datafram

基本上,对于每个'activum'代码,我想用cumprod值除以1997年的值,然后将结果放入dataframe的新列中。在

在excel中,我会通过用$符号锁定单元格来实现这一点,但考虑到我的数据帧有数千行长,并且有许多activum和其他组变量的组合,我希望用python编写这个代码。在


Tags: 数据代码dataframe屏幕符号excel公式我会
1条回答
网友
1楼 · 发布于 2024-04-19 04:49:11

使用由^{}与{a3}一起创建的新Series,并按{a4}筛选:

df = pd.DataFrame({
        'statisticsjaar': [1995, 1996, 1997] * 2,
        'activum_statline':['A02'] * 3 + ['A04'] * 3,
        'cumprod':[7,8,9,4,2,3],

})

s = df[df['statisticsjaar'] == 1997].set_index('activum_statline')['cumprod']
print (s)
activum_statline
A02    9
A04    3
Name: cumprod, dtype: int64

df['new'] = df['cumprod'].div(df['activum_statline'].map(s))
print (df)
   statisticsjaar activum_statline  cumprod       new
0            1995              A02        7  0.777778
1            1996              A02        8  0.888889
2            1997              A02        9  1.000000
3            1995              A04        4  1.333333
4            1996              A04        2  0.666667
5            1997              A04        3  1.000000

如果多个列需要join

^{pr2}$

相关问题 更多 >