У меня есть следующий фрейм данных
print(df1)
Date start end delta d1 x_s y_s z_s x_f y_f z_f
0 09/01/2017 09/01/2017 06/02/2017 28 28 0.989 0.945 0.626 0.191 0.932 0.280
1 10/01/2017 09/01/2017 06/02/2017 27 28 0.989 0.945 0.626 0.191 0.932 0.280
2 11/01/2017 09/01/2017 06/02/2017 26 28 0.989 0.945 0.626 0.191 0.932 0.280
3 12/01/2017 09/01/2017 06/02/2017 25 28 0.989 0.945 0.626 0.191 0.932 0.280
4 13/01/2017 09/01/2017 06/02/2017 24 28 0.989 0.945 0.626 0.191 0.932 0.280
5 14/01/2017 09/01/2017 06/02/2017 23 28 0.989 0.945 0.626 0.191 0.932 0.280
6 15/01/2017 09/01/2017 06/02/2017 22 28 0.989 0.945 0.626 0.191 0.932 0.280
7 16/01/2017 09/01/2017 06/02/2017 21 28 0.989 0.945 0.626 0.191 0.932 0.280
8 17/01/2017 09/01/2017 06/02/2017 20 28 0.989 0.945 0.626 0.191 0.932 0.280
9 18/01/2017 09/01/2017 06/02/2017 19 28 0.989 0.945 0.626 0.191 0.932 0.280
, где df1['delta'] = df1['end'] - df1['Date']
и df1['d1'] = df['end']-df1['start']
Я хотел бы создать 3 новых столбца, где он показывает интерполированные значения между парами (x_s, x_f), (y_s, y_f), (z_s, z_f).
Я попробовал следующий код
def mapper (name):
return name+'_i'
ss = list(df1[['x_s', 'y_s', 'z_s']])
fs = list(df1[['x_f', 'y_f', 'z_f' ]])
df2 = pd.DataFrame
for s in ss :
for f in fs:
df2[s] = df1[s] + (((df1[f] - df1[s])/df1['d1'])*df1['delta'])
df_conc = pd.concat((df1, df2_new), axis=1)
однако, когда я пытаюсь запустить вложенные циклы, я получаю следующую ошибку:
TypeError: 'type' object does not support item assignment
Интересно, что я делаю не так? Я был бы очень признателен за любую подсказку или предложение. Заранее большое спасибо!
вторая попытка:
ss = ('x', 'y', 'z')
for s in ss:
df1[mapper(s)] = pd.Series((df1[s+'_s'] + ((df1[s+'_f'] - df1[s+'_s'])/(df1['d1']))*df1['delta']), name=mapper(s), index=df1.index)
но все равно я не получаю 3 новых столбца, которые перебирают следующие пары (x_s, x_f), (y_s, y_f), (z_s, z_f).
Пожалуйста, дайте мне знать, если вы заметите, что я делаю неправильно, большое спасибо заранее!