亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從熊貓數據框的列中逐步減少值

如何從熊貓數據框的列中逐步減少值

蠱毒傳說 2021-04-08 18:48:32
假設我有一個數據框,如下所示:[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的value列中的值從116變為114。對于d, e,f,g從225變為222。
查看完整描述

3 回答

?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

使用GroupBy.cumcount的計數連續值和列減value:


#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


查看完整回答
反對 回復 2021-04-27
?
狐的傳說

TA貢獻1804條經驗 獲得超3個贊

如果連續值是唯一的,則可以 transform


df.groupby('value').value.transform(lambda k: k - k.reset_index().index)


0    116

1    115

2    114

3    225

4    224

5    223

6    222


查看完整回答
反對 回復 2021-04-27
?
九州編程

TA貢獻1785條經驗 獲得超4個贊

使用 cumcount


df.value-=df.groupby('value').cumcount()

df

Out[215]: 

  name  value

0    a    116

1    b    115

2    c    114

3    d    225

4    e    224

5    f    223

6    g    222


查看完整回答
反對 回復 2021-04-27
  • 3 回答
  • 0 關注
  • 188 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號