pandas 如何使用与列部分匹配的字符串列表过滤列?

o2g1uqev  于 2022-12-21  发布在  其他
关注(0)|答案(2)|浏览(189)

我有一个字符串列表

name_list=\['LIONEL MESSI','CRISTIANO RONALD','KYLIAN MBAPPÉ'\]

在csv文件中,有一个名为“long_name”的列有很多球员的名字,值像莱昂内尔安德烈斯·梅西·库西蒂尼、克里斯蒂亚诺·罗纳尔多·多斯·桑托斯阿韦罗、基里安·姆帕普·洛丁和内马尔·达席尔瓦·桑托斯·朱尼尔the csv
如果列包含列表中的字符串,我想过滤该列,即保留列表中的名称,并过滤掉列表中没有的名称,但这些字符串与列不完全匹配,只是部分匹配。
我如何使用这个列表来过滤列?我已经尝试了下面的行,但不工作...
第一个月
我也试过这段代码,但是不能过滤太多df[pd.notna(df['long_name']) & df['long_name'].astype(str).str.contains('|'.join(squad_list))]

e5nqia27

e5nqia271#

因此,只需执行类似以下操作来创建一个布尔掩码:

'LIONEL' in 'LIONEL MESSI'

要获取df类型df.columns的列。

lokaqttq

lokaqttq2#

使用contains。它将工作

import pandas as pd
import re

name_list=['LIONEL MESSI','CRISTIANO RONALD','KYLIAN MBAPPÉ']
s = pd.Series(name_list)

s.str.contains('messi|CRISTIANO', regex=True, flags=re.IGNORECASE)
Out: 
     0     True
     1     True
     2    False
    dtype: bool
s.str.contains('|'.join(name_list), regex=True, flags=re.IGNORECASE)
Out:
    0    True
    1    True
    2    True
    dtype: bool

相关问题