gpt4 book ai didi

python - 为什么 Pandas 分组聚合会丢弃分类列?

转载 作者:太空狗 更新时间:2023-10-30 01:25:06 24 4
gpt4 key购买 nike

情况

考虑以下两个数据框:

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属于 categoricals数据类型,否则 df2df1 相同.

现在考虑以下 groupby 聚合操作:

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_df2result_y_df1看起来完全符合我的预期。然而真正让我困惑的是 result_y_df2 分类列 D已被完全丢弃。这就提出了问题:

  • 为什么是分类列 Dresult_y_df2 中丢弃?
  • 如何防止分类列 D被丢弃,即我如何从 df2 获得分组聚合结果看起来类似于 result_y_df1

最佳答案

问题的原因似乎是 pandas 中的回归错误(从版本 0.23.0 开始出现)。解决方法是使用 head(1) 而不是 first()(如 Dark 所建议的那样)。

参见 this pandas github issue用于新的发展。

关于python - 为什么 Pandas 分组聚合会丢弃分类列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52027499/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com