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
这是一个迷你版的数据框,我想对每一行进行计算。对于每一行,我想从以变量值开头的列中减去最佳值(例如,对于第一行,我想从m_value中减去best,因为在variable列中指定了m)。因此,我有以下函数,它从以variable字符串开头的列中减去best:
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]