gpt4 book ai didi

python - Pandas 过滤器未按预期工作

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

我有一个 pandas 数据框,其中需要删除与给定列中的正则表达式模式不匹配的某些行。我需要运行正则表达式的列的格式为:lastname,firstname,并且我想删除该列中与该格式不匹配的所有行。我正在尝试使用 pandas 过滤方法,并且我尝试以这种方式使用命令:
edited_df = idf['Name'].filter(regex="([aA-zZ]*)([,]{1})([aA-zZ]*)")
edited_df = idf['名称'].filter(regex="/([aA-zZ]*)([,]{1})([aA-zZ]*)/")
但是,这样做会产生以下错误:
TypeError:无法在类似字节的对象上使用字符串模式
type(idf['Name']) 的结果是一个系列,其中的每个条目都是一个字符串,每个 type(idf['CIO'][1]).
我看到这个问题Pandas filter rows ,但我想让我的程序更加模块化,而不必每次添加名称时都调整名称列表。
我在 http://pythex.org/ 测试了我的正则表达式与测试字符串并且它按预期匹配,所以我假设我错误地使用了过滤方法。非常感谢任何帮助。
此外,不太重要的问题是是否可以访问从修改后的数据帧中的正则表达式创建的捕获组。

最佳答案

感谢 EdChum 的评论,以下是解决此问题的方法:
首先,使用以下方法删除 NaN 值:

idf.dropna(subset=['Name'], inplace=True)

然后,使用str.contains代替过滤器:

edited_df = idf[idf['Name'].str.contains(r"([aA-zZ]*)([,]{1})([aA-zZ]*)")]

关于python - Pandas 过滤器未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29104008/

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