首页 > 解决方案 > 如何在 DataFrame pandas 中保存 groupby 对象

问题描述

我有以下数据框:

Name    ID  Month   Shift 
Jon     1   Feb     A
Jon     1   Jan     B
Jon     1   Mar     C
Mike    1   Jan     A
Mike    1   Jan     B
Jon     1   Feb     C
Jon     1   Jan     A

而且我希望将下面的数据作为 groupby,但我无法这样做。请帮我。

df.groupby(['Name','ID','Shift']).

在此处输入图像描述

标签: pythonpython-3.xpandasgroup-bypandas-groupby

解决方案


这行得通吗?

df = pd.DataFrame(
    data=[['Jon', 1, 'Feb', 'A'],
          ['Jon', 1, 'Jan', 'B'],
          ['Jon', 1, 'Mar', 'C'],
          ['Mike', 1, 'Jan', 'A'],
          ['Mike', 1, 'Jan', 'B'],
          ['Jon', 1, 'Feb', 'C'],
          ['Jon', 1, 'Jan', 'A']],
    columns=['Name', 'ID', 'Month', 'Shift']
)

empty_rows = pd.DataFrame(
    data=[[name, '', '', ''] for name in df['Name'].unique()],
    columns=list(df)
)
df = pd.concat([df, empty_rows])

# this will need to be extended if you have additional months
df['Month'] = pd.Categorical(df['Month'], ['', 'Jan', 'Feb', 'Mar'])
df = df.set_index(['Name','Month']).sort_values(['Name', 'Month'])

读取excel文件:

df = pd.read_excel(
    r'C:\Users\dell\Desktop\stats.xlsx',
    sheet_name='Sheet5', 
    usecols=['Name', 'ID', 'Month', 'Shift']
)

推荐阅读