首页 > 解决方案 > 在 GroupBy 之后 Python Pandas DataFrame 困难变平

问题描述

我有一个包含 3 列的数据框,日期、时间和使用情况。时间间隔为 15 分钟(某些间隔可能/将丢失)。日期列列出了当月的每一天(可能超过一个月)。

目标是按每月每天按小时汇总使用值。我能够通过 groupby 完成此操作,但它创建了一个多索引系列。当我尝试将“reset_index()”添加到 groupby 的末尾时,我收到一个错误,因为我使用同一列两次(每月一次,每天一次)。我有一种感觉,我需要为我的列加上别名,这样我就可以展平多索引,但我不确定如何。

*注意我知道我可以只为一天和一小时创建“帮助”列并在我的 groupby 中使用这些列,但我希望不必这样做。

import pandas as pd

df = pd.read_csv('Interval Data', sep=';')

df.columns = df.columns.str.replace(' ', '')
df = df[['END_TIME', 'USAGE_DATE', 'USAGE']]
df['END_TIME'] = pd.to_datetime(df['END_TIME'])
df['USAGE_DATE'] = pd.to_datetime(df['USAGE_DATE'])

grp_df = df.groupby([df.USAGE_DATE.dt.month, df.USAGE_DATE.dt.day, df.END_TIME.dt.hour])['USAGE'].sum()

print(grp_df.head())

标签: pythonpandaspandas-groupby

解决方案


您可以重命名您的多索引。尝试:

grp_df.index.rename(['month1', 'day1', 'hour2'], inplace = True)

参考:https ://pandas.pydata.org/pandas-docs/version/0.22/generated/pandas.MultiIndex.rename.html


推荐阅读