いくつかの検索を行ったが、df["col"].str.contains(Word)
でデータフレームをフィルター処理する方法がわかりませんが、逆の方法があるのではないかと思います。そのセットの賛辞でデータフレームをフィルター処理します。例:!(df["col"].str.contains(Word))
の効果。
これはDataFrame
メソッドで実行できますか?
反転(〜)演算子を使用できます(ブール演算子ではないように機能します)。
new_df = df[~df["col"].str.contains(Word)]
、[new_df
はRHSによって返されたコピーです。
正規表現も受け入れます...
上記でValueErrorがスローされる場合、データ型が混在していることが原因である可能性が高いため、na=False
を使用します。
new_df = df[~df["col"].str.contains(Word, na=False)]
または、
new_df = df[df["col"].str.contains(Word) == False]
Not(〜)記号にも問題があったので、ここに別の方法を示します StackOverflow thread :
df[df["col"].str.contains('this|that')==False]
[適用]と[ラムダ]を使用して、列にリスト内の何かが含まれる行を選択できます。あなたのシナリオ:
df[df["col"].apply(lambda x:x not in [Word1,Word2,Word3])]
上記の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値を取り除き、問題なくコマンドを再試行しました。
回答がすでに投稿されていることを望みます
複数の単語とdataFrameの単語を無効にするを見つけるためのフレームワークを追加しています。
ここ'Word1','Word2','Word3','Word4'
=検索するパターンのリスト
df
= DataFrame
column_a
= DataFrame dfからの列名
Search_for_These_values = ['Word1','Word2','Word3','Word4']
pattern = '|'.join(Search_for_These_values)
result = df.loc[~(df['column_a'].str.contains(pattern, case=False)]
Nanselm2の答えに加えて、False
の代わりに0
を使用できます。
df["col"].str.contains(Word)==0