[英]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
对于选择第二级MultiIndex
与duplicated
布尔面具,反转条件和过滤器由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.