Добавление нового столбца в Dataframe и обновление значений строки в качестве имени других столбцов в зависимости от условия - PullRequest
1 голос
/ 26 апреля 2020

У меня есть фрейм данных со столбцами как a, c1, c2, c3 c4.

df = 
a.   c1.  c2.  c3.  c4.
P1   1    0    0    0
P2   0    0    0    1
P3   1    0    0    0
P4   0    1    0    0

На вышеупомянутом df я хочу сделать следующие операции: Добавить новый столбец main, значением которого будет имя столбца, который содержит значение 1 для конкретной строки. Например: 1-я строка будет иметь значение 'c1' в главном столбце, аналогично вторая строка будет иметь значение c4.

Полученный df будет выглядеть следующим образом:

df = 
    a.   c1.  c2.  c3.  c4. main
    P1   1    0    0    0   c1
    P2   0    0    0    1   c4
    P3   1    0    0    0   c1
    P4   0    1    0    0   c2

Я новичок в python и датафреймы. Пожалуйста, помогите.

1 Ответ

2 голосов
/ 26 апреля 2020

Используйте DataFrame.dot для умножения матриц:

Если a является первым столбцом, опустите его при индексировании:

df['main'] = df.iloc[:, 1:].dot(df.columns[1:])
#if possible multiple 1 per row
#df['main'] = df.iloc[:, 1:].dot(df.columns[1:] + ',').str.rstrip(',')
print (df)
    a  c1  c2  c3  c4 main
0  P1   1   0   0   0   c1
1  P2   0   0   0   1   c4
2  P3   1   0   0   0   c1
3  P4   0   1   0   0   c2

Если a - индекс :

df['main'] = df.dot(df.columns)
#if possible multiple 1 per row
#df['main'] = df.dot(df.columns + ',').str.rstrip(',')
print (df)
    c1  c2  c3  c4 main
a                      
P1   1   0   0   0   c1
P2   0   0   0   1   c4
P3   1   0   0   0   c1
P4   0   1   0   0   c2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...