Я хочу заполнить данные между каждой строкой в кадре данных средним значением текущей и следующей строки (где столбцы числовые)
начальные данные:
time value value_1 value-2
0 0 0 4 3
1 2 1 6 6
промежуточный df:
time value value_1 value-2
0 0 0 4 3
1 1 0 4 3 #duplicate of row 0
2 2 1 6 6
3 3 1 6 6 #duplicate of row 2
Я хотел бы создать df_1:
time value value_1 value-2
0 0 0 4 3
1 1 0.5 5 4.5 #average of row 0 and 2
2 2 1 6 6
3 3 2 8 8 #average of row 2 and 4
К этому я добавил копию начального кадра данных, чтобы создать промежуточный кадр данных, показанный выше:
df = df_0.append(df_0)
df.sort_values(['time'], ascending=[True], inplace=True)
df = df.reset_index()
df['value_shift'] = df['value'].shift(-1)
df['value_shift_1'] = df['value_1'].shift(-1)
df['value_shift_2'] = df['value_2'].shift(-1)
тогда я думал о применении функции к каждому столбцу:
def average_vals(numeric_val):
#average every odd row
if int(row.name) % 2 != 0:
#take average of value and value_shift for each value
#but this way I need to create 3 separate functions
Есть ли способ сделать это без написания отдельной функции для каждого столбца и применения к каждому столбцу один за другим (в действительностиданные у меня десятки столбцов)?