Python pandas multiindex-根据子索引的数量删除行
这是我的数据框:Python pandas multiindex-根据子索引的数量删除行,python,python-3.x,pandas,multi-index,Python,Python 3.x,Pandas,Multi Index,这是我的数据框: 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]},
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:
我希望保留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
请告诉我你有没有解决这个问题的线索
真诚地按第一级与任何列一起使用,并按以下方式进行比较和筛选:
或者通过提取一级索引,并使用反转掩码通过~
和keep=False对所有副本进行过滤:
df1 = df[~df.index.get_level_values(0).duplicated(keep=False)]
df1 = df[df.groupby(level=0)['C1'].transform('size').eq(1)]
df1 = df[~df.index.get_level_values(0).duplicated(keep=False)]