gpt4 book ai didi

python - 基于正则表达式过滤数据框

转载 作者:太空狗 更新时间:2023-10-30 00:50:18 24 4
gpt4 key购买 nike

假设我有一个数据框 my_df,其中有一列 'brand',我想删除品牌为 toyota宝马

我认为以下内容可以做到这一点:

my_regex = re.compile('^(bmw$|toyota$).*$')
my_function = lambda x: my_regex.match(x.lower())
my_df[~df['brand'].apply(my_function)]

但是我得到了错误:

ValueError: cannot index with vector containing NA / NaN values

为什么?如何使用正则表达式过滤我的 DataFrame?

最佳答案

我认为 re.match 在没有匹配项时返回 None 并且会破坏索引;下面是使用 pandas 的替代解决方案 vectorized string methods ;请注意,pandas 字符串方法可以处理空值:

>>> df = pd.DataFrame( {'brand':['BMW', 'FORD', np.nan, None, 'TOYOTA', 'AUDI']})
>>> df
brand
0 BMW
1 FORD
2 NaN
3 None
4 TOYOTA
5 AUDI

[6 rows x 1 columns]

>>> idx = df.brand.str.contains('^bmw$|^toyota$',
flags=re.IGNORECASE, regex=True, na=False)
>>> idx
0 True
1 False
2 False
3 False
4 True
5 False
Name: brand, dtype: bool

>>> df[~idx]
brand
1 FORD
2 NaN
3 None
5 AUDI

[4 rows x 1 columns]

关于python - 基于正则表达式过滤数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22290000/

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