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

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

使用來自不同行的值在 DataFrame 中創建新列

使用來自不同行的值在 DataFrame 中創建新列

幕布斯6054654 2022-06-28 17:28:42
我正在嘗試在 pandas 數據框中創建一個新列,該列是明年相同 ID 的分數。請參閱下面的示例原始數據:Year  ID    Score2018  785   8.4 2018  770   -1.22017  733   3.22017  785   7.92018  733   3.9如果沒有下一年的數據,則應填寫 NA。所以我正在尋找的輸出是:Year  ID    Score col2018  785   8.4   NA2018  770   -1.2  NA2017  733   3.2   3.92017  785   7.9   8.42018  733   3.9   NA數據當前未排序。
查看完整描述

1 回答

?
料青山看我應如是

TA貢獻1772條經驗 獲得超8個贊

如果您的數據對于所有 ID 都有連續年份(沒有帶有 的 ID 2016 2018),那么您可以執行以下操作:


 df['col'] = df.sort_values('Year').groupby('ID').Score.shift(-1)

輸出:


   Year   ID  Score  col

0  2018  785    8.4  NaN

1  2018  770   -1.2  NaN

2  2017  733    3.2  3.9

3  2017  785    7.9  8.4

4  2018  733    3.9  NaN

如果不能保證年份是連續的,則進行合并:


df.merge(df.assign(Year=lambda x: x.Year - 1),

         on=['Year', 'ID'],

         suffixes = ['','_new'],

         how='left')

輸出:


   Year   ID  Score  Score_new

0  2018  785    8.4        NaN

1  2018  770   -1.2        NaN

2  2017  733    3.2        3.9

3  2017  785    7.9        8.4

4  2018  733    3.9        NaN


查看完整回答
反對 回復 2022-06-28
  • 1 回答
  • 0 關注
  • 99 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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