variable best m_value g_value e_value
m 8 3 3 7
g 5 5 5 9
e 7 6 4 4
m 3 7 8 2
m 6 2 1 1
e 7 6 4 2
Это крошечная мини-версия моего фактического фрейма данных, и я хотел бы сделать расчеты для каждой строки. Для каждой строки я хотел бы вычесть лучший из столбца, который начинается со значения переменной (например, для первой строки я хотел бы вычесть best из m_value , так как m указано в столбце переменная ). Поэтому у меня есть следующая функция, которая вычитает best из столбца, который начинается со строки в variable :
df_test['dif'] = df_test.apply(lambda row: (df_test.loc[row,'best']) - (df_test[df_test.columns[pd.Series(df_test.columns).str.startswith(df_test.loc[row,'variable'])]]), axis=0)
Однако я получаю следующую ошибку:
(u'None of [0 m\n1 g\n2 e\n3 m\n4 m\n5 e\n6 g\n7 e\nName: variable, dtype: object] are in the [index]', u'occurred at index variable')
Как правильно применить функцию?
пример данных:
df_test = pd.DataFrame()
df_test['variable']= ['m', 'g', 'e', 'm', 'm', 'e','g', 'e']
df_test['best'] = [8,5,7,3,6,7,8,9]
df_test['m_value']= [3,5,6,7,2,6,6,9]
df_test['g_value']= [3,5,4,8,1,4,7,2]
df_test['e_value']= [7,9,4,2,1,2,3,4]