【问题标题】:pandas reset_index() not working after applying groupby应用 groupby 后,pandas reset_index() 不起作用
【发布时间】:2020-11-29 19:33:57
【问题描述】:

我有一个这样的熊猫数据框

df = pd.DataFrame({'id':[1,2,3,4,5], 'Opposition':['Sri Lanka', 'Sri Lanka', 'UAE','UAE','Sri Lanka'],
                   'Inning_no':[1,2,1,2,1], 'Wickets':[13,17,14,18,29]})

我有 groupby 来获得以下输出

t = inn.groupby(['Opposition', 'Inning_no'])['Wickets'].agg([('Wickets', 'sum'), ('Played', 'count')])

我有这样的输出

                                    Wickets   Played
            Opposition  Inning_no       
            v Sri Lanka    1           42       4
                           2           17       2
            v UAE          1           14       4
                           2           18       6

问题是 reset_index() 不能与 group by 一起使用。多列索引设置在 Opposition 和 Innings_no 列上。我希望重置索引并在一个级别中显示所有内容,如下所示。

我遇到了这个错误

ValueError: cannot insert Opposition, already exists

【问题讨论】:

  • 你的意思是反对和局应该是列而不是索引,并且作为索引你希望有越来越多的数字?
  • 在代码末尾执行.reset_index() 时会出现什么错误?也请将数据发布为文本而不是图像,因为图像无法复制
  • 您是否尝试通过调用将关键字 as_index=False 包含在组中?
  • df.groupby(['Opposition', 'Inning_no'])['Wickets'].agg([('Wickets', 'sum'), ('Played', 'count')]).reset_index() 适合我
  • 它对我来说也很好用(我只需要将 inn 替换为 df)。

标签: python pandas


【解决方案1】:

你可以在末尾添加reset_index

t = inn.groupby(['Opposition', 'Inning_no'])['Wickets'].agg([('Wickets', 'sum'), ('Played', 'count')]).reset_index()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-07
    • 2016-05-03
    • 1970-01-01
    • 2017-02-08
    • 2019-01-22
    • 1970-01-01
    • 2021-10-04
    • 2023-02-02
    相关资源
    最近更新 更多