熊猫可能使用 groupby 和 resample 的错误

Posted

技术标签:

【中文标题】熊猫可能使用 groupby 和 resample 的错误【英文标题】:pandas possible bug with groupby and resample 【发布时间】:2021-11-21 12:35:54 【问题描述】:

我是熊猫的新手,如果这可能是一个错误,请寻求建议?

具有非唯一日期时间索引的数据框。 col1 是组变量,col2 是值。

我想将每小时值重新采样为年并按组变量分组。我用这个命令来做这个

df_resample = df.groupby('col1').resample('Y').mean() 这可以正常工作并创建 col1 和 datetimeindeks 的多索引,其中 col1 现在不是数据框中的列

如果我将 mean() 更改为 max(),情况并非如此。然后 col1 是多索引的一部分,但该列仍然存在于数据框中。 这不是bug吗?

抱歉,我不知道如何在这篇文章中将虚拟数据呈现为数据框?

编辑: 代码示例:

from datetime import datetime, timedelta
import pandas as pd

data = 'category':['A', 'B', 'C'],
        'value_hour':[1,2,3]
days = pd.date_range(datetime.now(), datetime.now() + timedelta(2), freq='D')

df = pd.DataFrame(data, index=days)

df_mean = df.groupby('category').resample('Y').mean()
df_max = df.groupby('category').resample('Y').max()
print(df_mean, df_max)
                        
category                value_hour              
A        2021-12-31         1.0
B        2021-12-31         2.0
C        2021-12-31         3.0     

category              category  value_hour                           
A        2021-12-31        A           1
B        2021-12-31        B           2
C        2021-12-31        C           3

试图从 df_max 中删除类别列会产生 KeyError

df_max.drop('category')

File "C:\Users\mav\Anaconda3\envs\EWDpy\lib\site-packages\pandas\core\indexes\base.py", line 3363, in get_loc
raise KeyError(key) from err

KeyError: 'category'

【问题讨论】:

包括df.head().to_dict() 的输出。请参阅here 了解更多信息。 添加代码示例 【参考方案1】:

关于 KeyError:问题在于您试图删除“类别”行而不是列。 使用 drop 删除列时,您应该添加axis = 1,如下代码所示:

df_max.drop('category', axis=1)

axis=1 表示您正在查看列

【讨论】:

啊,是的,谢谢。这解决了我的问题 - 但不应该在使用 .mean() 时删除该列 - 因此是一个错误? 嗨,是的,我同意,这很奇怪。我还尝试使用 PyCharm 中的调试器运行它。当我逐步运行它时,一切都很好,并且输出没有类别列,而如果我让脚本运行,它会打印带有类别列的数据框......您可以尝试检查您是否可以重现此行为吗? 我可以在我正在进行的项目中重现它。之后我想重置索引,但由于类别列而无法重置。

以上是关于熊猫可能使用 groupby 和 resample 的错误的主要内容,如果未能解决你的问题,请参考以下文章

在 pandas 数据帧上同时操作 groupby 和 resample?

熊猫 .plot.hist() 和 .groupby()

df.groupby('id').resample('D').last() 在 Pandas 中的 Pyspark 等效项

pandas使用resample进行不同粒度下的时间特征重构实战:构建时间维度统计特征

pandas 时间序列resample

熊猫每 n 行