我是一个新手在熊猫和征求意见,如果这是一个可能的错误?
具有非唯一日期时间索引的数据框。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表示您正在查看
列