У меня есть набор данных с именем test3
, похожий (импортированный из Excel):
$ID $spec $orient $direct $rep $slope $intercept
9119 1 stance 15b 1 2859.09223 158
9119 2 stance 15b 2 2886.53583 321
9119 3 stance 0 1 2860.91423 21
9119 4 fall 15f 1 2878.9364 326
9119 5 fall 15f 2 2902.0397 45
9120 1 stance 15b 1 1444.91347 654
9120 2 stance 15b 2 1460.09585 23
9120 3 stance 0 1 1470.2588 85
9120 4 fall 15f 1 1481.6892 225
9120 5 fall 15f 2 1475.40215 145
и шаблонный фрейм данных с именем test3mean
:
$ID $spec $orient $direct $slope $intercept
9119 1 stance 15b nan nan
9119 2 stance 0 nan nan
9119 3 fall 15f nan nan
9120 1 stance 15b nan nan
9120 2 stance 0 nan nan
9120 3 fall 15f nan nan
Я используя Pandas dataframe для вычисления среднего значения $slope
и $intercept
для повторных измерений в test3
и помещая их в соответствующие столбцы в test3mean
:
ID = np.array([9119,9120])
orient = np.array(['stance','fall'])
direct = np.array(['0','15f','15b'])
for i in ID:
for o in orient:
for d in direct:
test3mean[test3mean['$ID']==i][test3mean['$orient']==o][test3mean['$direct']==d][['$slope','$intercept']] = test3[test3['$ID']==i][test3['$orient']==o][test3['$direct']==d][test3['$rep']!=3].mean()[['$slope','$intercept']]
Однако, test3mean
не меняется. Мне известно о проблеме копирования и просмотра, и я видел решения df.loc[:,()]
, но не смог реализовать их для моего конкретного c случая.
Ожидаемый результат после двух шагов l oop будет для test3mean выглядеть так:
$ID $spec $orient $direct $slope $intercept
9119 1 stance 15b 2872.81403 239.5
9119 2 stance 0 2860.91423 21
9119 3 fall 15f nan nan
9120 1 stance 15b nan nan
9120 2 stance 0 nan nan
9120 3 fall 15f nan nan