熊猫-如何根据条件制作新专栏

中航

我有这张桌子

   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,因为Day 2为空

当Day = 3时,明天平均值= 1400,因为第4天的平均值是1400

怎么做?

df["Tomorrow Average"] = [] # ????????
瓦沙里

使用索引的非常长的解决方案,

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)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章