繁体   English   中英

从层次索引熊猫的级别中删除重复项

[英]Drop duplicates from level in hierarchical index pandas

我想根据第二个索引重复删除以下分层索引的数据帧。 我还没有找到一种方法来做到这一点。 有一个pandas.Multiindex.drop_duplicates()但是它不允许您指定级别。

一个示例数据框是:

In [5]: df
Out[5]:
               given_name  surname  dob  phone_number_1_clean 
985    2414           1.0      1.0  0.0                   1.0
       122864         1.0      1.0  0.0                   0.0
       167863         1.0      1.0  0.0                   0.0
       418911         1.0      1.0  0.0                   0.0
       516362         1.0      1.0  0.0                   0.0
2414   122864         1.0      1.0  0.0                   0.0
       167863         1.0      1.0  1.0                   0.0
       418911         1.0      1.0  1.0                   0.0
       516362         1.0      1.0  0.0                   0.0
122864 167863         1.0      1.0  0.0                   1.0
       418911         1.0      1.0  0.0                   1.0
       516362         1.0      1.0  0.0                   1.0
167863 418911         1.0      1.0  1.0                   1.0
       516362         1.0      1.0  0.0                   1.0
418911 516362         1.0      1.0  0.0                   1.0

输出应如下所示:

               given_name  surname  dob  phone_number_1_clean 
985    2414           1.0      1.0  0.0                   1.0
       122864         1.0      1.0  0.0                   0.0
       167863         1.0      1.0  0.0                   0.0
       418911         1.0      1.0  0.0                   0.0
       516362         1.0      1.0  0.0                   0.0

使用get_level_values对于选择第二级MultiIndexduplicated布尔面具,反转条件和过滤器由boolean indexing

df = df[~df.index.get_level_values(1).duplicated()]
print (df)
            given_name  surname  dob  phone_number_1_clean
985 2414           1.0      1.0  0.0                   1.0
    122864         1.0      1.0  0.0                   0.0
    167863         1.0      1.0  0.0                   0.0
    418911         1.0      1.0  0.0                   0.0
    516362         1.0      1.0  0.0                   0.0

详细说明

print (df.index.get_level_values(1))
Int64Index([  2414, 122864, 167863, 418911, 516362, 122864, 167863, 418911,
            516362, 167863, 418911, 516362, 418911, 516362, 516362],
           dtype='int64')

print (df.index.get_level_values(1).duplicated())
[False False False False False  True  True  True  True  True  True  True
  True  True  True]

print (~df.index.get_level_values(1).duplicated())
[ True  True  True  True  True False False False False False False False
 False False False]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM