Я использовал pandas.pivot_table для агрегирования по моим фреймам данных, предоставляя параметру aggfunc список функций (например, [np.mean, np.std]
).Теперь я хочу обернуть эти функции так, чтобы они работали только в первой половине предоставленного столбца, выполняя что-то вроде:
new_df = pd.pivot_table(df, values=feature_cols, index=id_cols, aggfunc=[lambda x: np.mean(x[:len(x)//2]), lambda y: np.std(y[:len(y)//2])])
, что выдает ошибку:
pandas.core.indexes.base.InvalidIndexError: Reindexing only valid with uniquely valued Index objects
Однакоnew_df = pd.pivot_table(df, values=feature_cols, index=id_cols, aggfunc=[np.mean,np.std])
работает просто отлично.
Полагаю, я могу неправильно понять, как pivot_table
передает массивоподобные функции или как в целом работают лямбда-выражения.
Хотелось бы либо исправить это, либо узнать, как лучше обернуть функции в python.Я не хочу использовать def
определенную функцию для каждой функции в списке, который мне нужно использовать.