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

时间:2018-04-09 16:03:03

标签: pandas dataframe selection multi-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)

如何获取此列表?

提前谢谢。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,

function persistence(num) {
  numString = num.toString();
  let sum = 1;
  for (var i = 0; i < numString.length; i++) {
    sum = sum * numString[i];
  }
  console.log(sum);
};
persistence(485);

输出:

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()