问题描述
过去,我这样做没有问题:
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
我在做什么错了?
解决方法
'abc' in ddf['col']
将查看列中的字符串'abc'
是否在任何地方,并返回一个值。如果要使用两个数组对DataFrame进行切片,请改用此方法:
ddf = ddf[ (ddf['col'].str.isin('abc')) | (ddf['col'].str.isin('doh'))]