【问题标题】:MultiIndex pandas DataFrame - how to add "Other" column from remaining rowsMultiIndex pandas DataFrame - 如何从剩余行中添加“其他”列
【发布时间】:2023-01-04 18:57:16
【问题描述】:

我有一个 2 级索引 DataFrame,我只想为第二级保留 2 个顶行,并为其余行添加一行“其他”。这是我的数据框:

import pandas as pd

df = pd.DataFrame()
df["Idx1"] = ["A", "A", "A", "A", "B", "B", "B", "B"]
df["Idx2"] = ["X", "Y", "Z", "Q", "X", "Y", "Z", "Q"]
df["Values"] = [1,2,3,4, 1,2,3,4]
df = df.set_index(["Idx1", "Idx2"])
df

这就是我如何为第一级提取顶部 2 行:

res = df.groupby(level = 0).head(2)
res

但是我在添加“其他”列时遇到问题。我想要的输出是:

enter image description here

如何以最优雅的方式做到这一点?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    使用groupby.apply 的一种选择:

    (df.groupby(level='Idx1')
       .apply(lambda d: pd.concat([d.droplevel(0).head(2),
                                   d.droplevel(0).tail(-2).sum().to_frame(name='Other').T,
                                   ]))
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-13
      • 1970-01-01
      • 2019-02-08
      • 2013-03-22
      • 2016-09-01
      • 1970-01-01
      • 2016-11-06
      • 1970-01-01
      相关资源
      最近更新 更多