[英]Select MultiIndex rows by level, in Pandas
How can I select rows from a MultiIndex DataFrame that have more than 1 level?如何从具有超过 1 个级别的 MultiIndex DataFrame 中选择行? For example, given the following DataFrame:
例如,给定以下 DataFrame:
col
L1 L2
a 1 5624
2 1656
3 265677
4 3755
b 5 47
6 85544
c 7 97656
d 8 12774
e 9 111
10 9478
I would like to end up with a DataFrame that looks like:我想最终得到一个如下所示的 DataFrame:
col
L1 L2
a 1 5624
2 1656
3 265677
4 3755
b 5 47
6 85544
e 9 111
10 9478
检查transform
count
out = df[df.groupby(level=0)['col'].transform('count').values>1]
If you only want to consider the first level:如果只想考虑第一级:
df[df.index.get_level_values('L1').duplicated(keep=False)]
# or
df[df.index.get_level_values(0).duplicated(keep=False)]
If you want to consider all levels:如果要考虑所有级别:
df[df.index.to_frame().apply(pd.Series.duplicated, keep=False).any(1)]
output:输出:
col
L1 L2
a 1 5624
2 1656
3 265677
4 3755
b 5 47
6 85544
e 9 111
10 9478
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.