gpt4 book ai didi

python-3.x - 如何检查 Pandas 行是否包含列表的任何完整字符串或子字符串?

转载 作者:行者123 更新时间:2023-12-05 02:14:42 24 4
gpt4 key购买 nike

我有一个字符串列表

list_ = ['abc', 'def', 'xyz']

我有一个 dfCheckCol 列,我想检查 CheckCol 中的值是否包含整个子字符串列表元素。

如果是这样,我想将原始值提取到新列 NewCol 中。

CheckCol
'a'
'ab'
'abc'
'abc-de'

进入

# What I want
CheckCol NewCol
'a'
'ab'
'abc' 'abc'
'abc-de' 'abc-de'

但是,我的以下代码只能识别准确的完整字符串,而不能识别我要查找的子字符串。

df['NewCol'] = np.where(df['CheckCol'].isin(list_), df['CheckCol'], '')

并给予

# What I get
CheckCol NewCol
'a'
'ab'
'abc' 'abc'
'abc-de'

编辑:将 list 更改为 list_

最佳答案

我认为“最简单”的实现解决方案是使用正则表达式。在正则表达式中,管道 | 表示或。通过执行 '|'.join(yourlist),我们得到了我们想要检查的子字符串。

import pandas as pd
import numpy as np

list_ = ['abc', 'def', 'xyz']

df = pd.DataFrame({
'CheckCol': ['a','ab','abc','abd-def']
})

df['NewCol'] = np.where(df['CheckCol'].str.contains('|'.join(list_)), df['CheckCol'], '')

print(df)

# CheckCol NewCol
#0 a
#1 ab
#2 abc abc
#3 abd-def abd-def

注意:您的变量名 list 已更改为 list_。尽量避免使用保留的 Python 命名空间。

关于python-3.x - 如何检查 Pandas 行是否包含列表的任何完整字符串或子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53327023/

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