Я хочу применить среднее значение функции numpy к объекту фрейма данных pandas. Поскольку я хочу применить эту функцию к строковому элементу объекта dataframe, я применил функцию карты. код выглядит следующим образом:

df = pd.DataFrame(np.random.rand(5,3),columns = ['Col1','Col2','Col3'])
df_averge_row = df.apply(np.average(weights=[[1,1,1],[2,2,2],[3,3,3],[4,4,4],[5,5,5]]),axis=0)

К сожалению, это не работает. Любое предложение было бы полезно

0
atreyi datta 5 Окт 2019 в 17:22

1 ответ

Лучший ответ

Поскольку у вас есть 3 столбца в каждой строке и вы применяете функцию по строкам (не по столбцам) для каждого вашего вопроса, функция весов может иметь только 3 элемента (по одному на каждый столбец в данной строке, скажем [1,2, 3]):

df = pd.DataFrame(np.random.rand(5,3),columns = ['Col1','Col2','Col3'])
weights = weights=[1,2,3]
df_averge_row = df.apply(lambda x: np.average(x, weights=weights),axis=1)

df_averge_row

Вне:

0    0.618617
1    0.757778
2    0.551463
3    0.497654
4    0.755083
dtype: float64
0
Denys Prykhodko 5 Окт 2019 в 14:45