• 主页
  • 获取pandas多索引数据帧中索引的标签

获取pandas多索引数据帧中索引的标签

我有一个数据帧df

                   c1     c2  
name       sample
person1    a1      aaa    AAA  
           b1      bbb    BBB  
           c1      ccc    CCC  
person2    d1      ...  

我想遍历数据帧,一次一个人,并检查列中的值是否与某个条件匹配。如果我得到一个匹配项,那么我想提取该索引的标签(在level1上,以字符串的形式),并创建一组所有这样的索引。假设我的标准是column_value == bbb,那么我想得到"b1“

下面的代码产生了我想要的结果,但它返回的是生成器对象集,而不是字符串形式的标签名称。

index_set = set()
for person, new_df in df.groupby(level=0):
    idx = new_df.index.get_level_values(1).tolist()
    index_set.add(x for x in idx) 

它产生了一些类似于0x0000022F6F05D200>,在0x0000022F6F05D410>,....

那么如何让它生成像{"b1","f1","h1",...}这样的东西呢?

还有另一个问题:当通过创建new_df遍历df时,索引名称似乎不会传输到new_df。这能以某种方式避免吗?如果我可以将索引称为get_level_values('sample')而不是get_level_values(1),这将使代码更具可读性。

转载请注明出处:http://www.sh-shangchao.com/article/20230526/1670284.html