【问题标题】:Pandas groupby divide consecutive rows in some particular groupsPandas groupby 在某些特定组中划分连续行
【发布时间】:2020-11-25 22:58:00
【问题描述】:

我有一个像这样的熊猫数据框:

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

最后对于variable a 的组,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

如何做到这一点?

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    让我们试试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
    

    【讨论】:

    • 一个不错的答案:) +1
    • @YOBEN_S 你不应该先排序
    猜你喜欢
    • 1970-01-01
    • 2021-10-01
    • 1970-01-01
    • 2019-03-16
    • 2016-12-07
    • 2017-06-22
    • 2016-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多