![](/img/trans.png)
[英]How to materialize the group key for each row of the original dataframe? ('by' is a pandas grouper)
[英]How to retain datetime column in pandas grouper and group by?
我有一个 pandas dataframe,其结构如本问题所示Parsing JSON with number as key usng pandas -
Date Time InverterVoltage Invertercurrent
2021-11-15 14:37:05 219.1 20
2021-11-15 14:38:05 210.2 21
等等。 数据每 1 分钟可用一次。
我有这样的代码 -
df['inverterConsumption'] = df.inverterVoltage*df.inverterCurrent
然后我使用这个 groupby 结构计算每小时平均值
df['Datetime'] = pd.to_datetime(df['Date'].apply(str)+' '+df['Time'].apply(str))
davg_df2 = df.groupby(pd.Grouper(freq='H', key='Datetime')).mean()
我想要做的是以下 - 我只想过滤九月份的逆变器消耗
davg_df2 = davg_df2[davg_df2['Datetime'].dt.month_name() =='September']
但我收到一条错误消息
KeyError: Datetime
很明显davg_df2
dataframe 不包括df
中存在的 Datetime 列(因为它是非数字的)。 如何将其包含在 groupby 和 grouper 子句中?
Pandas 版本 1.5.2 和 Python 版本 3.8
df['Datetime'] = pd.to_datetime(df['Date'].apply(str)+' '+df['Time'].apply(str))
davg_df2 = df.groupby(pd.Grouper(freq='H', key='Datetime')).mean().reset_index()
在 groupby 的结果中添加 reset_index()
为了避免将Datetime
(分组列)作为索引,而是将其保留为列, pd.DataFrame.groupby
可以接收as_index=False
参数来为您执行此操作。
as_index: bool , default True对于聚合的output,返回object,以组标签为索引。 仅与 DataFrame 输入相关。 as_index=False 实际上是“SQL 风格”分组 output。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.