我有这张桌子
Day, Average
1, 1200,
3, 1300,
4, 1400,
5, 1500,
我想要什么:
Day, Average, Tomorrow_average
1, 1200, NaN
3, 1300, 1400
4, 1400, 1500
5, 1500, NaN
说明:
明天的平均值是第二天的平均值
当Day = 1时,明天平均值= NaN,因为第2天为空
当Day = 3时,明天平均值= 1400,因为第4天的平均值为1400
该怎么做?
df["Tomorrow Average"] = [] # ????????
答案 0 :(得分:2)
使用重新索引的超长解决方案,
df['Tomorrow_average'] = df.set_index('Day').reindex(np.arange(df.Day.min(), df.Day.max()+1)).Average.shift(-1).reindex(df.Day).reset_index(drop = True)
Day Average Tomorrow_average
0 1 1200 NaN
1 3 1300 1400.0
2 4 1400 1500.0
3 5 1500 NaN
使用相同的输出更简单:
cond = (df['Day'] + 1) == df['Day'].shift(-1)
df['Tomorrow_average'] = np.where(cond, df['Average'].shift(-1), np.nan)