225

私はいくつかの検索を行いましたが、データフレームを でフィルタリングする方法がわかりdf["col"].str.contains(word)ませんが、逆の方法があるかどうか疑問に思っています:そのセットの補数でデータフレームをフィルタリングします。例: の効果!(df["col"].str.contains(word))

DataFrameこれはメソッドを介して行うことができますか?

4

7 に答える 7

17

Apply と Lambda を使用できます。

df[df["col"].apply(lambda x: word not in x)]

または、より複雑なルールを定義する場合は、AND を使用できます。

df[df["col"].apply(lambda x: word_1 not in x and word_2 not in x)]
于 2019-01-14T03:13:29.297 に答える
7

上記の Andy が推奨するコマンドを使用する前に、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 値を取り除き、問題なくコマンドを再試行しました。

于 2016-11-22T22:06:59.337 に答える