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

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

刪除滿足列值條件的 Pandas 數據幀的初始行,同時保持列中的序列值完整

刪除滿足列值條件的 Pandas 數據幀的初始行,同時保持列中的序列值完整

慕桂英546537 2021-05-30 19:26:28
dt = {'id': [120,120,120,120,121,121,121], 'day': [0, 1,2,3,0,1,2], 'value': [[0.5,3.4,2.7],[0.45,3.4,0.7],[0.25,0.4,0.7],[0.15,0.34,0.17],[0.35,3.4,2.7],[0.5,3.44,2.57],[0.5,0.34,0.37]]}df = pd.DataFrame(data=dt)    day id  value0   0   120 [0.5, 3.4, 2.7]1   1   120 [0.45, 3.4, 0.7]2   2   120 [0.25, 0.4, 0.7]3   3   120 [0.15, 0.34, 0.17]4   0   121 [0.35, 3.4, 2.7]5   1   121 [0.5, 3.44, 2.57]6   2   121 [0.5, 0.34, 0.37]我有一個pandas dataframe. 我希望該序列column "day"的最大值為1。對于column day大于1的值,我要刪除其初始行,然后將序列重置為[0-1]這就是在這種情況下,column"id"=120有列“天”有兩個額外的值2和3。我想刪除自己的前兩排在這種情況下,然后更換日的列值(0,1)。結果:    day id  value0   0   120 [0.25, 0.4, 0.7]1   1   120 [0.15, 0.34, 0.17]2   0   121 [0.5, 3.44, 2.57]3   1   121 [0.5, 0.34, 0.37]
查看完整描述

2 回答

?
烙印99

TA貢獻1829條經驗 獲得超13個贊

您可以減去按id和分組時的最大值query


m = df.groupby('id').day.transform('max')

df.assign(day=df.day.sub(m - 1)).query('day >= 0')


   day   id               value

2    0  120    [0.25, 0.4, 0.7]

3    1  120  [0.15, 0.34, 0.17]

5    0  121   [0.5, 3.44, 2.57]

6    1  121   [0.5, 0.34, 0.37]


查看完整回答
反對 回復 2021-06-01
?
三國紛爭

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

您可以使用groupbywith tail,然后我們會cumcount重新創建這一天


df.groupby('id').tail(2).assign(day=lambda x : x.groupby('id').cumcount())

Out[221]: 

   day   id               value

2    0  120    [0.25, 0.4, 0.7]

3    1  120  [0.15, 0.34, 0.17]

5    0  121   [0.5, 3.44, 2.57]

6    1  121   [0.5, 0.34, 0.37]


查看完整回答
反對 回復 2021-06-01
  • 2 回答
  • 0 關注
  • 164 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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