在Pandas Dataframe中从值1的列中创建一个短语列

时间:2019-06-01 13:43:21

标签: python pandas dataframe

假设我有这个数据集,我想创建一个短语列,为每个列添加一个单词,值是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 个答案:

答案 0 :(得分:4)

假设第一个数据集命名为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 

答案 1 :(得分:1)

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