pandas groupby 和 resample 可能存在错误
pandas possible bug with groupby and resample
我是 pandas 的新手,如果这是一个可能的错误,请寻求建议?
具有非唯一日期时间索引的数据框。 Col1 是组变量,col2 是值。
我想将每小时值重新采样为年并按组变量分组。我用这个命令来做这个
df_resample = df.groupby('col1').resample('Y').mean()
这工作正常并创建了 col1 和 datetimeindeks 的多重索引,其中 col1 现在不是数据帧中的列
如果我将 mean() 更改为 max(),情况就不是这样了。然后 col1 是多索引的一部分,但该列仍然存在于数据框中。
这不是bug吗?
抱歉,我不知道如何在此 post?
中将虚拟数据呈现为数据框
编辑:
代码示例:
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'
关于 KeyError:问题是您试图删除“类别”行而不是列。
使用 drop 删除列时,您应该添加 axis = 1 ,如以下代码所示:
df_max.drop('category', axis=1)
axis=1 表示您正在查看列
我是 pandas 的新手,如果这是一个可能的错误,请寻求建议?
具有非唯一日期时间索引的数据框。 Col1 是组变量,col2 是值。
我想将每小时值重新采样为年并按组变量分组。我用这个命令来做这个
df_resample = df.groupby('col1').resample('Y').mean() 这工作正常并创建了 col1 和 datetimeindeks 的多重索引,其中 col1 现在不是数据帧中的列
如果我将 mean() 更改为 max(),情况就不是这样了。然后 col1 是多索引的一部分,但该列仍然存在于数据框中。 这不是bug吗?
抱歉,我不知道如何在此 post?
中将虚拟数据呈现为数据框编辑: 代码示例:
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'
关于 KeyError:问题是您试图删除“类别”行而不是列。 使用 drop 删除列时,您应该添加 axis = 1 ,如以下代码所示:
df_max.drop('category', axis=1)
axis=1 表示您正在查看列