Pandas groupby在某些特定组中划分连续行

2024-05-12 14:39:24 发布

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

我有一个熊猫数据框,如下所示:

id variable year value
1     a      20   1.1
1     a      21   1.1
1     a      22   1.2
2     a      20   0.5
2     a      21   0.3
2     a      22   0.1
1     b      20   1.1
1     b      21   1.1
1     b      22   1.2
2     b      20   0.5
2     b      21   0.3
2     b      22   0.1

现在,我想按idvariable分组,并通过分割连续行的值来更新value列,其中variable是a。我想让其他小组保持现状

id variable year value
1     a      20   
1     a      21   1
1     a      22   1.09
2     a      20   
2     a      21   0.6
2     a      22   0.33
1     b      20   1.1
1     b      21   1.1
1     b      22   1.2
2     b      20   0.5
2     b      21   0.3
2     b      22   0.1

最后,对于具有variablea的组,2020值不可用,我想在2020年复制2021值

id variable year value
1     a      20   1
1     a      21   1
1     a      22   1.09
2     a      20   0.6
2     a      21   0.6
2     a      22   0.33
1     b      20   1.1
1     b      21   1.1
1     b      22   1.2
2     b      20   0.5
2     b      21   0.3
2     b      22   0.1

如何做到这一点


Tags: 数据idvalue小组variableyear现状variablea
1条回答
网友
1楼 · 发布于 2024-05-12 14:39:24

让我们试试pct_change

s=1+df.groupby(['id','variable']).value.pct_change().bfill()
df.loc[df.variable=='a','value']=s
df
Out[52]: 
    id variable  year     value
0    1        a    20  1.000000
1    1        a    21  1.000000
2    1        a    22  1.090909
3    2        a    20  0.600000
4    2        a    21  0.600000
5    2        a    22  0.333333
6    1        b    20  1.100000
7    1        b    21  1.100000
8    1        b    22  1.200000
9    2        b    20  0.500000
10   2        b    21  0.300000
11   2        b    22  0.100000

相关问题 更多 >