使用给定的索引列表从多索引数据框中获取数据

Get data from multiindexed dataframe with given a list of index

我想从具有多个索引的某个 pandas 数据帧中名为 'index' 的列中获取信息。但应列出索引。请看下面的例子。

      index        ID
0  0    1.0  17226815
1  0    2.0  17226807
2  0    3.0  17226816   
3  0    4.0  17226808
4  0    5.0  17231739
5  0    6.0  17231739
6  0    1.0  17226815
   1    2.0  17226807
7  0    1.0  17226815
   1    3.0  17226816

filtered_list = [3, 5, 7]

用下面一行我可以得到过滤后的数据。

print(df.loc[df.index.isin(filtered_list, level=0)]['index'])

输出:

3  0    4.0
5  0    6.0
7  0    1.0
   1    3.0

我想要得到的是一个由'index'值组成的列表。然后它将作为过滤索引旁边的附加信息。显示如下:

0  3       4
1  5       6
2  7  (1, 3)

我怎样才能得到这个列表?

提前致谢。

如果我没理解错的话,

df.loc[filtered_list,'index'].groupby(level=0).apply(tuple).reset_index()

输出:

   0       index
0  3      (4.0,)
1  5      (6.0,)
2  7  (1.0, 3.0)

更进一步:

df.loc[filtered_list,'index']\
  .groupby(level=0)\
  .apply(lambda x: tuple(x)[0] if len(x.index)==1 else tuple(x))\
  .reset_index()

输出:

   0       index
0  3           4
1  5           6
2  7  (1.0, 3.0)