提示groupby和resample可能存在错误



我是一个新手在熊猫和征求意见,如果这是一个可能的错误?

具有非唯一日期时间索引的数据框。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:UsersmavAnaconda3envsEWDpylibsite-packagespandascoreindexesbase.py", line 3363, in get_loc
raise KeyError(key) from err
KeyError: 'category'

关于KeyError:问题是,您正在尝试放弃"类别"行而不是列。当使用drop来删除列时,您应该添加axis = 1,如下面的代码所示:

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

axis=1表示您正在查看

最新更新