在pandas多重索引MultiIndex
中选定指定索引的行有多种方法,下面分别进行详细讲解。
方法一:用tuple定位指定行
在多重索引中,每一维度的索引可以用tuple来表示,所以可以用tuple定位指定行。假设有一个多重索引如下所示:
>>> import pandas as pd
>>> index = pd.MultiIndex.from_tuples([(0, 'A'), (0, 'B'), (1, 'A'), (1, 'B')], names=['idx1', 'idx2'])
>>> df = pd.DataFrame({'col1': range(4)}, index=index)
>>> print(df)
col1
idx1 idx2
0 A 0
B 1
1 A 2
B 3
选取第二行的方法如下:
>>> selected_row = df.loc[(0, 'B'), :]
>>> print(selected_row)
col1 1
Name: (0, B), dtype: int64
方法二:用slice
类型定位指定范围的行
还可以通过slice
类型来选择指定范围的行。以前面的多重索引为例,下面的代码展示了如何选取idx1=1和idx2='B'的部分和idx1=0且idx2在'A'和'B'之间的那部分:
>>> selected_rows = df.loc[(slice(None), ['B']), :].append(df.loc[(0, slice('A', 'B')), :])
>>> print(selected_rows)
col1
idx1 idx2
0 A 0
B 1
1 B 3
在这个例子中,slice(None)
表示选取所有的idx1,['B']
表示选取idx2等于B的所有行,slice('A', 'B')
表示选取idx2的取值范围为A到B之间的所有行,在loc
函数中,用:
表示选择所有的列。最后使用append
函数将两部分索引到的行合并起来。
以上是选定指定索引的行的两种方法,使用的时候需要根据具体场景灵活运用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在pandas多重索引multiIndex中选定指定索引的行方法 - Python技术站