我做了一些搜索,不知道如何过滤一个数据框架
df["col"].str.contains(word)
然而,我想知道是否有一种方法可以做相反的事情:通过该集合的赞美来过滤数据帧。例:效果是
!(df["col"].str.contains(word))
这可以通过DataFrame方法来完成吗?
我做了一些搜索,不知道如何过滤一个数据框架
df["col"].str.contains(word)
然而,我想知道是否有一种方法可以做相反的事情:通过该集合的赞美来过滤数据帧。例:效果是
!(df["col"].str.contains(word))
这可以通过DataFrame方法来完成吗?
当前回答
我也遇到了不(~)符号的麻烦,所以这里是另一个StackOverflow线程的另一种方式:
df[df["col"].str.contains('this|that')==False]
其他回答
除了nanselm2的答案,你可以用0代替False:
df["col"].str.contains(word)==0
我也遇到了不(~)符号的麻烦,所以这里是另一个StackOverflow线程的另一种方式:
df[df["col"].str.contains('this|that')==False]
以某种方式”。包含“不适合我,但当我尝试的时候”。isin'正如@kenan在回答中提到的(如何从熊猫数据帧中删除包含特定列中的特定字符串的行?)它是有效的。进一步说,如果你想查看整个数据帧,并删除那些有特定单词(或一组单词)的行,只需使用下面的循环
for col in df.columns:
df = df[~df[col].isin(['string or string list separeted by comma'])]
只需删除~以获得包含单词的数据框架
在使用上面安迪推荐的命令之前,我必须去掉NULL值。一个例子:
df = pd.DataFrame(index = [0, 1, 2], columns=['first', 'second', 'third'])
df.ix[:, 'first'] = 'myword'
df.ix[0, 'second'] = 'myword'
df.ix[2, 'second'] = 'myword'
df.ix[1, 'third'] = 'myword'
df
first second third
0 myword myword NaN
1 myword NaN myword
2 myword myword NaN
现在运行命令:
~df["second"].str.contains(word)
我得到以下错误:
TypeError: bad operand type for unary ~: 'float'
我先用dropna()或fillna()摆脱了NULL值,然后重试该命令,没有问题。
要否定查询,请使用~。使用query的优点是直接返回df的有效观测值:
df.query('~col.str.contains("word").values')