У меня есть dataframe DFприбудет метка индекса в панде мультииндекса dataframe
c1 c2
name sample
person1 a1 aaa AAA
b1 bbb BBB
c1 ccc CCC
person2 d1 ...
Я хочу, чтобы перебирать dataframe, один человек за один раз, и убедитесь, что значения в столбцах совпадают критерий. Если я получу совпадение, я бы хотел извлечь метку для этого индекса (на уровне [1] и как строку) и создать набор всех таких индексов. Поэтому скажите, что мои критерии таковы, что 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", .. .} вместо этого?
И еще один вопрос: при итерации через df путем создания new_df имена индексов не передаются в new_df. Можно ли это как-то избежать? Это сделало бы код более читаемым, если бы я мог ссылаться на индекс как get_level_values ('sample'), а не get_level_values (1)