Рассмотрим dataframe:панды агрегация - расчеты между столбцами
np.random.seed(0)
df_agg = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar',
'foo', 'bar', 'foo', 'foo'],
'C' : np.random.choice(2, 8)})
я хотел бы, чтобы вычислить, сгруппированных по A
следующие столбцы:
- Количество элементов
- Количество Правда в
C
- Процент True в
C
- Количество Ложные в
C
- Процент Ложные в
C
Первые три элемента являются простыми с использованием агрегирования:
aggregations = {
'C': {
'Number of elements': 'count',
'Number of True':sum,
'Percentage of True': 'mean'
}
}
df_tab = df_agg.groupby('A').agg(aggregations)
print df_tab
И выход:
C
Number of elements Number of True Percentage of True
A
bar 3 2 0.666667
foo 5 4 0.800000
Однако я не знаю, как, в той же совокупности, вычислять столбцы, которые являются комбинацией других столбцов - количество и процент Fals е.
В качестве обходного пути, я могу это сделать:
df_tab = df_tab['C'] #flatten
df_tab['Number of False'] = df_tab['Number of elements'] - df_tab['Number of True']
df_tab['Percentage of False'] = 1 - df_tab['Percentage of True']
Какой будет уступать то, что я хочу, но я задаюсь вопросом, как сделать все это сразу.
Number of elements Number of True Percentage of True Number of False Percentage of False
A
bar 3 2 0.666667 1 0.333333
foo 5 4 0.800000 1 0.200000
Я думаю, что ваш выбор: 1) определить вторичные столбцы, такие как «число ложных», и 2) создать вторичный фрейм данных и добавить его в 'df_tab'. – periphreal