Панды - Как сделать новую колонку с условием

1

у меня есть эта таблица

   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

Объяснение:

Завтра Среднее Среднее на следующий день

когда День = 1, Завтра Average = NaN, потому что День 2 пуст

Когда День = 3, Завтра Среднее = 1400, потому что Среднее в День 4 - 1400

Как это сделать?

df["Tomorrow Average"] = [] # ????????
Теги:
pandas

1 ответ

2
Лучший ответ

Очень длинное решение с использованием 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)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню