繁体   English   中英

如何保留 pandas 石斑鱼和分组依据中的日期时间列?

[英]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。

来源: pandas.DataFrame.groupby

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM