gpt4 book ai didi

python - 检查是否存在与列表中的字符串匹配的子字符串

转载 作者:行者123 更新时间:2023-12-05 09:33:00 26 4
gpt4 key购买 nike

这里有点初学者问题;我目前有一个 pandas df,其中一列包含各种不同的字符串。我还有一些当前为空的列。以下前几行的示例;

Risk,Cost,Productivity,Security
"Unforeseen cost due to CCTV failures",,,
"Unexpected drop in Productivity",,,

我还创建了一组列表如下;

Cost = ['Cost']
Productivity = ['Productivity']
Security = ['Security','CCTV','Camera']

基本上我想做的是遍历每一列并检查同一行“风险”列中的字符串是否包含与列表中的字符串之一匹配的子字符串。理想的输出如下;

Risk,Cost,Productivity,Security
"Unforeseen cost due to security issues",TRUE,FALSE,TRUE
"Unexpected drop in Productivity",FALSE,TRUE,FALSE

到目前为止,我已经尝试了几种不同的方法,比如

any(Cost in Risk for Cost in Costs)

但是,我不确定是否有办法避免 any() 函数区分大小写,而且我不确定如何将其应用于整个列。我确实尝试过

df['Cost'] = any(Cost in df['Risk'] for Cost in Costs)

但是返回的列中全是“FALSE”。任何朝着正确方向的插入将不胜感激!谢谢

最佳答案

我们可以创建一个对应于列表CostSecurityProductivity 的正则表达式模式,然后使用str.contains 测试列 Risk

的字符串中每个正则表达式模式的出现
for c in ('Cost', 'Productivity', 'Security'):
df[c] = df['Risk'].str.contains(fr"(?i)\b(?:{'|'.join(locals()[c])})\b")

                                   Risk   Cost  Productivity  Security
0 Unforeseen cost due to CCTV failures True False True
1 Unexpected drop in Productivity False True False

关于python - 检查是否存在与列表中的字符串匹配的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67569316/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com