幕布斯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
添加回答
舉報
0/150
提交
取消