[英]Create new column in a DataFrame using values from a different row
我正在嘗試在 pandas dataframe 中創建一個新列,這是明年相同 ID 的分數。 請參閱下面的示例原始數據:
Year ID Score
2018 785 8.4
2018 770 -1.2
2017 733 3.2
2017 785 7.9
2018 733 3.9
如果沒有下一年的數據,則應填寫 NA。 所以我正在尋找的 output 將是:
Year ID Score col
2018 785 8.4 NA
2018 770 -1.2 NA
2017 733 3.2 3.9
2017 785 7.9 8.4
2018 733 3.9 NA
數據當前未排序。
如果您的數據對於所有 ID 都有連續年份(沒有2016 2018
的 ID),那么您可以執行以下操作:
df['col'] = df.sort_values('Year').groupby('ID').Score.shift(-1)
Output:
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')
Output:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.