Ситуация
Рассмотрим следующие два кадра данных:
import pandas as pd # version 0.23.4
df1 = pd.DataFrame({
'A': [1, 1, 1, 2, 2],
'B': [100, 100, 200, 100, 100],
'C': ['apple', 'orange', 'mango', 'mango', 'orange'],
'D': ['jupiter', 'mercury', 'mars', 'venus', 'venus'],
})
df2 = df1.astype({'D': 'category'})
Как видно из кадра данных df2
столбец D
относится к категориям типу данных, но в остальном df2
идентичен df1
.
Теперь рассмотрим следующие операции группового агрегирования:
result_x_df1 = df1.groupby(by='A').first()
result_x_df2 = df2.groupby(by='A').first()
result_y_df1 = df1.groupby(by=['A', 'B']).first()
result_y_df2 = df2.groupby(by=['A', 'B']).first()
с результатами, которые выглядят следующим образом:
In [1]: result_x_df1
Out[1]:
B C D
A
1 100 apple jupiter
2 100 mango venus
In [2]: result_x_df2
Out[2]:
B C D
A
1 100 apple jupiter
2 100 mango venus
In [3]: result_y_df1
Out[3]:
C D
A B
1 100 apple jupiter
200 mango mars
2 100 mango venus
In [4]: result_y_df2
Out[4]:
C
A B
1 100 apple
200 mango
2 100 mango
Вопрос
result_x_df1
, result_x_df2
и result_y_df1
выглядят именно так, как я и ожидал.Что меня действительно озадачивает, так это то, что в result_y_df2
столбце категорических данных D
был полностью отброшен .Возникают вопросы:
- Почему столбец категорий
D
отбрасывается в result_y_df2
? - Как можно предотвратить удаление столбца категорий 10 *, то есть как я могуполучить результат группирования-агрегирования из
df2
, который выглядит как result_y_df1
?