Проблема в том, что pandas
не знает, как взять среднее значение treatment
, так как это строки. Одним из решений было бы получить ваши средства, используя groupby('Metadata_A')
, затем объединить эти значения с исходным кадром данных, а затем снова groupby('Metadata_A')
:
# Get your means:
grp = df.groupby('Metadata_A').mean().reset_index()
# Merge those with the original `dataframe`, getting rid of extra columns
(df.merge(grp, on = ['Metadata_A'], suffixes=('', '_mean'))
.drop(['Metadata_B', 'ratio'], axis=1)
.groupby('Metadata_A')
.first()
.reset_index()
)
Что возвращает:
Metadata_A treatment ratio_mean Metadata_B_mean
0 B10 AB_cmpd_01 74893.954167 3
1 B11 UT 92330.071933 3
2 B2 UT 109589.381818 3
Редактировать @ Метод группировки Вена по treatment
и Metadata_A
имеет гораздо больший смысл, чем я только что описал. Если вы ищете средства обоих столбцов, вы можете просто сделать:
df.groupby(['Metadata_A', 'treatment']).mean().reset_index()