我有這個 df:d={'year':[2019,2018,2017],'B':[10,5,17]}df=pd.DataFrame(data=d)print(df): year B0 2019 101 2018 52 2017 17我想創(chuàng)建一個列“B_previous_year”,從前一年獲取 B 數據,其方式如下所示: year B B_previous_year0 2019 10 51 2018 5 172 2017 17 NaN我正在嘗試這個:df['B_previous_year']=df.B.loc[df.year == (df.year - 1)]然而我B_previous_year已經滿了NaN year B B_previous_year0 2019 10 NaN1 2018 5 NaN2 2017 17 NaN我怎么能那樣做?
2 回答

猛跑小豬
TA貢獻1858條經驗 獲得超8個贊
如果您想保留整數格式:
df = df.convert_dtypes()
df['New'] = df.B.shift(-1)
df
輸出:
year B New
0 2019 10 5
1 2018 5 17
2 2017 17 <NA>

蝴蝶不菲
TA貢獻1810條經驗 獲得超4個贊
您可能想先按年份對數據框進行排序,然后驗證一行與下一行的差異確實是一年:
df = df.sort_values(by='year')
df['B_previous_year'] = df[df.year.diff() == 1]['B']
year B B_previous_year
2 2017 17 NaN
1 2018 5 5.0
0 2019 10 10.0
添加回答
舉報
0/150
提交
取消