首页 > 解决方案 > 根据列值删除行(Dask)

问题描述

我想根据列的值删除 Dask DataFrame 的某些行。

我过去这样做没有任何问题:

ddf = ddf[ (ddf['col'] == str1) | (ddf['col'] == str2)]

我现在所拥有的有点不同。此列包含一个类似“abc,def,ghk”的字符串,如果它不包含“abc”或“doh”,我想删除它。

我尝试过类似的东西:

 ddf = ddf[ ('abc' in ddf['col']) | ('doh' in ddf['col'])]

但我明白了

 KeyError: True

(我认为)因为表达式返回一个布尔值并且没有具有该值的键,

 ddf = ddf.drop(ddf.index[('abc' in ddf['col']) | ('doh' in ddf['col'])])

这给了我

 NotImplementedError: Series getitem in only supported for other series objects with matching partition structure

我究竟做错了什么?

标签: pythondaskseries

解决方案


'abc' in ddf['col']查看字符串'abc'是否在列中的任何位置,并返回单个值。如果您想要两个数组来切片 DataFrame,请改用:

 ddf = ddf[ (ddf['col'].str.isin('abc')) | (ddf['col'].str.isin('doh'))]

推荐阅读