如何在DataFrame中找到重复的索引?

时间:2015-01-18 20:28:13

标签: python pandas dataframe multi-index

我有一个带有多级索引的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")。

4 个答案:

答案 0 :(得分:3)

您可以使用get_duplicates()方法:

>>> df.index.get_level_values('instance').get_duplicates()
[0, 1]

(在我的示例中,数据01都会多次出现。)

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()]