簡體   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