【发布时间】:2014-04-12 22:56:48
【问题描述】:
假设我有一个数据框my_df,其中有一列'brand',我想删除品牌为toyota 或bmw 的所有行。
我认为以下方法可以做到:
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?
【问题讨论】:
-
您的正则表达式没有意义:'$' 太多。也许您只是在寻找
(bmw|toyota)。re.match暗示了一个领先的^,并且您不需要用.*$明确声明“不关心接下来会发生什么”。尽管有些事情告诉我,即使使用有效的正则表达式,上述内容也不起作用。