【问题标题】:How to save groupby object in DataFrame pandas如何在 DataFrame pandas 中保存 groupby 对象
【发布时间】:2020-06-24 20:29:22
【问题描述】:

我有以下数据框:

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']).

【问题讨论】:

标签: python python-3.x pandas group-by pandas-groupby


【解决方案1】:

这行得通吗?

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']
)

【讨论】:

  • 但是我们也可以排序 Month 吗?作为它的起始形式二月。我想在我的查询中显示为输出的格式和名称下面的一行
  • 我已更新我的答案以包括空行并按月排序
  • 哇 Kait .. 你太棒了 .. 是的,它的工作很完美,但一个月的一个疑问。因为数据每个月都会增加。我的意思是这个月也是四月的四月和五月的五月,依此类推,直到十二月。所以可以使用下面的代码 df['Month'] = pd.Categorical(df['Month'], ['', 'Jan', 'Feb', 'Mar','Apr','May','Jun' ,'jul','Aug','sep','oct','Nov','Dec']).. 因此,当我们的数据框中有数据时,它将正常工作。
  • df.index = df.index.map(lambda x: x[0] if x[1] == '' else x[1])
  • df.rename_axis('Name') 你可能会觉得这很有帮助:pandas.pydata.org/pandas-docs/stable/reference/api/…
猜你喜欢
  • 1970-01-01
  • 2020-04-24
  • 2018-01-15
  • 1970-01-01
  • 2021-02-21
  • 1970-01-01
  • 2018-08-06
  • 1970-01-01
  • 2018-09-22
相关资源
最近更新 更多