熊猫-如何制作有条件的新专栏

时间:2018-10-14 08:39:05

标签: python pandas

我有这张桌子

   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"] = [] # ????????

1 个答案:

答案 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)