Создайте столбец фразы из столбцов со значением 1 в Pandas Dataframe - PullRequest
2 голосов
/ 01 июня 2019

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

    SINNOUVEAU  PERTETOTAL  CHANGGARAN  SOCLOCATIO  SINISAMEDI  NOMASCONDU  SINIREPET
0            1           0           0           0           0           1          0
1            0           1           0           0           0           1          0
2            0           0           1           0           0           1          0

Это фрейм данных для значений фразы для каждого столбца, если установлено значение 1:

          col                  phr
0  SINNOUVEAU     sinistre nouveau
1  PERTETOTAL         perte totale
2  CHANGGARAN  changement garantie
3  SOCLOCATIO     societe location
4  SINISAMEDI               samedi
5  NOMASCONDU        nom different
6   SINIREPET   sinistre repetitif

Итак, для приведенного выше кадра данных это ожидаемый результат:

    SINNOUVEAU  PERTETOTAL  CHANGGARAN  SOCLOCATIO  SINISAMEDI  NOMASCONDU  SINIREPET  Phrase
0            1           0           0           0           0           1          0  sinistre nouveau, nom different
1            0           1           0           0           0           1          0  perte totale, nom different
2            0           0           1           0           0           1          0  changement garantie, nom different

Ответы [ 2 ]

4 голосов
/ 01 июня 2019

Предполагая, что первый набор данных имеет имя df, а второй - df1: мы принимаем помощь df.dot(), как показано ниже:

m=df.rename(columns=df1.set_index('col')['phr'].to_dict())
df['Phrase']=m.dot(m.columns+',').str.rstrip(',')
print(df)

   SINNOUVEAU  PERTETOTAL  CHANGGARAN  SOCLOCATIO  SINISAMEDI  NOMASCONDU  \
0           1           0           0           0           0           1   
1           0           1           0           0           0           1   
2           0           0           1           0           0           1   

   SINIREPET                             Phrase  
0          0     sinistre nouveau,nom different  
1          0         perte totale,nom different  
2          0  changement garantie,nom different 
2 голосов
/ 01 июня 2019

IIUC

s=df.dot(df.columns.map(df1.set_index('col').phr)+',').str[:-1]
s
0       sinistrenouveau,nomdifferent
1           pertetotale,nomdifferent
2    changementgarantie,nomdifferent
dtype: object
df['Phr']=s
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...