Изменение значения фиктивной переменной с 1 на имя столбца, а затем создание списка, с которым я могу сравнивать строки - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть кадр данных, который выглядит следующим образом:

A    B    C

1    0    0
1    1    0
0    1    0
0    0    1

Я хочу заменить все значения соответствующим именем столбца, чтобы данные выглядели так:

 A    B    C  

 A    0    0  
 A    B    0   
 0    B    0   
 0    0    C   

ВпоследствииЯ хочу создать столбец, который представляет собой список всех значений столбцов, например:

 A    B    C         D

 A    0    0   ['A','0','0']
 A    B    0   ['A','B','0']
 0    B    0   ['0','B','0']
 0    0    C   ['0','0','C']

Наконец, я хочу сгруппировать по столбцу D и посчитать количество вхождений для каждого шаблона.

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Должно быть очиститель способов для достижения этой цели, но вы можете использовать:

for column in df:
    df[column] = df[column].astype(str).replace("1", column)
df["D"] = df.values.tolist()

Вывод:

   A  B  C          D
0  A  0  0  [A, 0, 0]
1  A  B  0  [A, B, 0]
2  0  B  0  [0, B, 0]
3  0  0  C  [0, 0, C]

PS: Ответ ВБ - это уборщик способ.

0 голосов
/ 14 декабря 2018

Вы можете сделать с mul

df.mul(df.columns).replace('',0)
Out[63]: 
   A  B  C
0  A  0  0
1  A  B  0
2  0  B  0
3  0  0  C
#df['D']=df.mul(df.columns).replace('',0).values.tolist()
...