Добавьте столбцы фрейма данных в список при условии, что если он равен 1, то он должен быть в списке, иначе нет

#python #pandas #dataframe

Вопрос:

У меня есть фрейм данных в этом формате :

 P00 P1 P10 P11 P12 P13 P14 P15   0 0 1 0 0 0 0 0   0 1 1 0 0 0 0 0   0 0 1 1 1 1 1 1   0 0 1 0 1 0 0 0   

Для каждой строки моего фрейма данных я хочу получить имя столбца, в котором строка = 1 в списке .

выход:

 ['P10']   ['P1','P10']  ['P10','P11','P12','P13','P14','P15']  ['P10','P12']   

Комментарии:

1. Пожалуйста, проясните вашу конкретную проблему или предоставьте дополнительные сведения, чтобы выделить именно то, что вам нужно. Поскольку это написано в настоящее время, трудно точно сказать, о чем вы просите.

Ответ №1:

Вам нужно просто добавить astype(str) в решение, данное StupidWolf, как это :

 import pandas as pd df = pd.DataFrame({'P00':[0,0,0,0],'P1':[0,1,0,0], 'P10':[1,1,1,1],'P11':[0,0,1,0]})  dt=df.apply(lambda x:df.columns[x==1].tolist(),axis=1) dt.astype(str)  

Выход :

 0 ['P10'] 1 ['P1', 'P10'] 2 ['P10', 'P11'] 3 ['P10'] dtype: object