выводить имена столбцов, если строка равна значению в python - PullRequest
0 голосов
/ 30 января 2019

Как я могу перебирать строки и печатать имена столбцов в одном столбце, если значение = 1

mydata = [{'a' : '0', 'b': 1, 'c': 0}, {'a' : 1, 'b': 0, 'c':1}, {'a' : '0', 'b': 1, 'c':1}] 
df = pd.DataFrame(mydata)

a   b   c   Result 
0   1   0   b 
1   0   1   a , c
0   1   1   b , c

В результате отображаются только имена столбцов, равные 1

Ответы [ 4 ]

0 голосов
/ 30 января 2019

Вы также можете сделать это:

for i in range(len(df)):
    df.set_value(i,'Result',[df.columns[(df == 1).iloc[i]]])
0 голосов
/ 30 января 2019

Используйте логическое индексирование для индексации строки и объединения имен столбцов

df['new'] = df.eq(1).apply(lambda x: ', '.join(x[x].index), axis = 1)

    a   b   c   new
0   0   1   0   b
1   1   0   1   a, c
2   0   1   1   b, c
0 голосов
/ 30 января 2019

Больше решений для начинающих будет

for index, row in df.iterrows():
    for key in row.keys():
        print(key if row.get(key) == 1 else None)
0 голосов
/ 30 января 2019

Использование dot

df['New']=df.astype(int).dot(df.columns+',').str[:-1]
df
Out[44]: 
   a  b  c  New
0  0  1  0    b
1  1  0  1  a,c
2  0  1  1  b,c
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...