我有一个pandas dataframe,它有两个层次的多级索引和一个布尔列“Tag”。我想做的是确定,对于第一级中的每个索引值,在第二级中是否只有一个唯一的值,其中“Tag”== True。
在许多情况下,级别2上的索引值是重复的,但是数据是结构化的,使得“Tag”值对于具有相同索引值的每一行都是一致的。
d = {'ID': [1, 1, 1, 1, 1, 2, 2, 2, 2, 2],
'File': ['a', 'a', 'b', 'b', 'c', 'd', 'd', 'e', 'e', 'f'],
'Tag': [False, False, True, True, False, True, True, False, False, True]}
df = pd.DataFrame(data=d)
df.set_index(['ID', 'File'], inplace = True)
df
Tag
ID File
1 a False
a False
b True
b True
c False
2 d True
d True
e False
e False
f True
在这个例子中,我想识别文件'd'和'f'(两个不同的文件在同一个ID,其中Tag = True)
索引级别1是可以的,因为文件b是唯一具有'Tag' == True的文件,即使它出现多次。
或者,我可以确定出现问题的第1级索引(ID = 2)
我尝试使用DataFrame.duplicated为每个索引级别查找重复的“Tag”值,但它似乎完全忽略了索引。
df.duplicated(keep=False)
ID File
1 a True
a True
b True
b True
c True
2 d True
d True
e True
e True
f True
dtype: bool
有没有一种方法可以让我在 Dataframe 中找到索引的唯一级别的重复值?
1条答案
按热度按时间jchrr9hc1#
要查找索引唯一级别的数据框中的重复值,首先需要通过reset_index()对数据框进行解组: