Python 熊猫-如何使用条件创建新列
我有这张桌子Python 熊猫-如何使用条件创建新列,python,pandas,Python,Pandas,我有这张桌子 Day, Average 1, 1200, 3, 1300, 4, 1400, 5, 1500, 我想要的是: Day, Average, Tomorrow_average 1, 1200, NaN 3, 1300, 1400 4,
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天是空的
当第3天时,明天的平均值为1400,因为第4天的平均值为1400
怎么做
df["Tomorrow Average"] = [] # ????????
使用reindex的非常长的解决方案
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)