gpt4 book ai didi

python - 检查字符串中是否存在特定子字符串(存在于数据帧的行中)

转载 作者:行者123 更新时间:2023-12-01 07:30:07 24 4
gpt4 key购买 nike

尝试在 pandas 数据帧的列中查找子字符串。

下面是我的代码

    import pandas as pd

list1=[1,2,4,5,6,10]

list2=[3,5,86,7,6,20]

list3=['ABC , CDE','CDE','XYZ' , 'cde','XYZ , EFG , CDE qw','IJK']

df1=pd.DataFrame({'col1':list1,'col2':list2,'col3':list3})

D=df1[df1.col3.str.contains('CDE', case=False)]

print('\n \n \n ',D)

print('\n \n \n ',df1)

原始数据框:

col1    col2    col3
1 3 ABC , CDE
2 5 CDE
4 86 XYZ
5 7 cde
6 6 XYZ , EFG , CDE qw
10 20 IJK

输出数据帧:

col1    col2    col3
1 3 ABC , CDE
2 5 CDE
5 7 cde
6 6 XYZ , EFG , CDE qw

我需要什么:

col1    col2    col3
1 3 ABC , CDE
2 5 CDE
5 7 cde

我不想要包含“XYZ、EFG、CDE qw”的 col3。我希望能够区分“CDE qw”和“CDE”。

简单来说,我想迭代 col3 中的字符串并找到确切的字符串。

当我使用 D=df1[df1.col3.str.match('CDE', case=False)] 而不是 D=df1[df1.col3.str.contains ('CDE', case=False)]

输出将是

2   5   CDE
5 7 cde

但我想要其他具有 CDE 的行。

我相信我应该使用正则表达式和 split 来处理 pandas。但我不确定如何迭代 pandas 数据帧的所有子字符串

最佳答案

我会选择列表理解

mask = [any([sub.lower() == 'cde' for sub in item.split(' , ')]) for item in df1.col3]
df1[mask]
<小时/>

您还可以使用

df1[(pd.DataFrame(df1['col3'].str.lower().str.split(' , ').tolist()) == 'cde').any(1)]

col1 col2 col3
0 1 3 ABC , CDE
1 2 5 CDE
3 5 7 cde

关于python - 检查字符串中是否存在特定子字符串(存在于数据帧的行中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57246577/

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