我有一个带有多级索引的pandas DataFrame("实例""索引")。我想找到所有非唯一的第一级("实例")索引值并打印出这些值。
我的框架看起来像这样:
A
instance index
a 1 10
2 12
3 4
b 1 12
2 5
3 2
b 1 12
2 5
3 2
我想找到" b"作为重复的0级索引并打印其值(" b")。
答案 0 :(得分:3)
您可以使用get_duplicates()
方法:
>>> df.index.get_level_values('instance').get_duplicates()
[0, 1]
(在我的示例中,数据0
和1
都会多次出现。)
get_level_values()
方法可以接受标签(例如'实例')或整数,并检索MultiIndex的相关部分。
答案 1 :(得分:0)
您想要重复的方法:
df['Instance'].duplicated()
答案 2 :(得分:0)
假设您的df
的索引由'instance'
和'index'
组成,您可以这样做:
df1 = df.reset_index().pivot_table(index=['instance','index'], values='A', aggfunc='count')
df1[df1 > 1].index.get_level_values(0).drop_duplicates()
哪个收益率:
Index([u'b'], dtype='object')
在末尾添加.values
(.drop_duplicates().values
)会生成一个数组:
array(['b'], dtype=object)
或使用.groupby
:
df[df.groupby(level=['instance','index']).count() > 1].dropna().index.get_level_values(0).drop_duplicates()
答案 3 :(得分:0)
这应该为您提供整行,这与您要求的不完全相同,但可能足够接近:
df[df.index.get_level_values('instance').duplicated()]