加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

如何逐步减少pandas数据帧的一个值

发布时间:2020-12-20 12:35:17 所属栏目:Python 来源:网络整理
导读:假设我有一个如下所列的数据帧: [1] df name value a 116 b 116 c 116 d 225 e 225 f 225 g 225 现在我希望df成为 name value a 116 b 115 c 114 d 225 e 224 f 223 g 222 也就是说,只要原始df在连续行的列中具有相同(固定)值,它就应该逐渐减少1.因此,名称a
假设我有一个如下所列的数据帧:

[1] df
    name   value
     a      116
     b      116
     c      116
     d      225
     e      225
     f      225
     g      225

现在我希望df成为

name   value
     a      116
     b      115
     c      114
     d      225
     e      224
     f      223
     g      222

也就是说,只要原始df在连续行的列中具有相同(固定)值,它就应该逐渐减少1.因此,名称a,b,c的值列中的值从116到114.对于d,e,f,g从225到222.

好心劝告.

解决方法

GroupBy.cumcount用于计数连续值并从列值中减去:

#consecutive rows to Series g
g = df['value'].ne(df['value'].shift()).cumsum()
df['value'] = df['value'] - df.groupby(g).cumcount()
print (df)
  name  value
0    a    116
1    b    115
2    c    114
3    d    225
4    e    224
5    f    223
6    g    222

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读