![](/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.