gpt4 book ai didi

python - pandas multiindex - 根据子索引的数量删除行

转载 作者:行者123 更新时间:2023-12-02 00:08:00 24 4
gpt4 key购买 nike

这是我的数据框:

df = pd.DataFrame(pd.DataFrame({"C1" : [0.5, 0.9, 0.1, 0.2, 0.3, 0.5, 0.2], 
"C2" : [200, 158, 698, 666, 325, 224, 584],
"C3" : [15, 99, 36, 14, 55, 62, 37]},
index = pd.MultiIndex.from_tuples([(0,0), (1,0), (1,1), (2,0), (2,1), (3,0), (4,0)],
names=['L1','L2'])))

df:

         C1      C2     C3
L1 L2
0 0 0.5 200 15
1 0 0.9 158 99
1 0.1 698 36
2 0 0.2 666 14
1 0.3 325 55
3 0 0.5 224 62
4 0 0.2 584 37

我想在 L1 子索引中保留只有一个值的行(在这种情况下为 0),以便得到类似的东西:

         C1      C2     C3
L1 L2
0 0 0.5 200 15
3 0 0.5 224 62
4 0 0.2 584 37

如果你有解决这个问题的线索,请告诉我好吗?

真诚的

最佳答案

使用GroupBy.transform通过第一级与任何列 GroupBy.size并通过 Series.eq 进行比较并按 boolean indexing 过滤:

df1 = df[df.groupby(level=0)['C1'].transform('size').eq(1)]

或者通过Index.get_level_values提取一级索引并通过 ~ 使用 Index.duplicated 使用倒置掩码进行过滤和 keep=False 用于所有欺骗:

df1 = df[~df.index.get_level_values(0).duplicated(keep=False)]

关于python - pandas multiindex - 根据子索引的数量删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59952399/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com