从Datafram中值为1的列中生成短语列

2024-09-29 22:01:18 发布

您现在位置:Python中文网/ 问答频道 /正文

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

Tags: 数据nomdifferentnouveautotalesinistrepertechanggaran
2条回答

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

假设第一个数据集命名为df,第二个数据集命名为df1: 我们需要^{}的帮助,如下所示:

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 

相关问题 更多 >

    热门问题