通过匹配Python中的某些单词,为新创建的列赋值

2024-05-14 16:45:51 发布

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

我有一个数据集,每当我看到某个包含特定单词的单词时,我都希望在新列中匹配特定值

数据

id           status
see-dd-2333     y
see-dd-aaaaa    y
sal-led-sss     y
sal-led-sss     n
dis-dd-red      n

所需的

id           status pw  
see-dd-2333     y   14  
see-dd-aaaaa    y   14  
sal-led-sss     y   8   
sal-led-sss     n   8   
dis-dd-red      n   5   

我想我可以用字典。每当我看到“see dd”的模式时,我想提供14的数值。当我看到包含“sal led”的单词时,我希望提供8个数值。每当我看到'dis dd'时,我都希望将其与值5匹配

out= {
    'see-dd': 14,
    'sal-led': 8,
}

如有任何建议,我们将不胜感激


Tags: 数据idled字典statusred单词dd
2条回答

您还可以使用:

df['pw'] = df['id'].str.rsplit('-', 1).str.get(0).map(out)

输出:

            id status  pw
0   see-dd-2333      y  14
1  see-dd-aaaaa      y  14
2   sal-led-sss      y   8
3   sal-led-sss      n   8
4    dis-dd-red      n   5

最简单的方法是使用^{}方法。正如文件指出的那样:

This method has a lot of options. You are encouraged to experiment and play with this method to gain intuition about how it works.

df['id'].replace(regex=out)

0    14
1    14
2     8
3     8
4     5
Name: id, dtype: int64

使用out作为:

out= {
    'see-dd': 14,
    'sal-led': 8,
    'dis-dd':  5
}

df['pw'] = df['id'].replace(regex=out)

df
             id status  pw
0   see-dd-2333      y  14
1  see-dd-aaaaa      y  14
2   sal-led-sss      y   8
3   sal-led-sss      n   8
4    dis-dd-red      n   5

相关问题 更多 >

    热门问题