2016-08-25 8 views
1

私のデータフレームを変更しようとしています。 は、通常、私はパンダ:文字列に対する複数の条件

df1= df[df.url.str.contains("avito.ru/*/telefony/")] 

のようなものを使用しかし、私は条件をたくさんしたい場合は? containsに100文字を超える文字列を書きたいと思います。 どうすればいいですか?

DATAFRAME

анонс кинофильмов 2016 
анонс кинофильмов 2016 
"выборок имеют величину момента сопротивления" 
"выборок имеют величину момента сопротивления" 
ансамбль 9 человек 
ансамбль 9 человек 
ансамбль 9 человек 
"Времена года в музыке, литературе, живописи" 
"Времена года в музыке, литературе, живописи" 
"Времена года в музыке, литературе, живописи" 
apple iphone 
samsumg 
facebook 
None 
None 
None 

し、リストからいくつかの単語

lst = ['iphone', 'sony', 'alcatel', 'galaxy', 'samsumg] 

欲望の出力

apple iphone 
samsumg 
None 
None 
None 

私はいくつかの単語がstrの中に含まれていない場合、私はそれを削除する意味。 (しかし値なし、私もそこにいたい)。あなたはすべてのあなたのリスト項目で|に参加してパターンを作成し、str.containsにこれを渡すことができ

+0

申し訳ありこのユーザー:http://stackoverflow.com/users/6065920/ldevyataykina?この質問は、そのユーザーの質問に実際に似ている – EdChum

+0

また、あなたの質問は100文字列すべてを一致させるか、100文字列のいずれかに一致する文字列を探していますか? – EdChum

+0

@EdChum希望出力を追加する –

答えて

0

In [31]: 
lst = ['iphone', 'sony', 'alcatel', 'galaxy', 'samsumg','None'] 
pat = '|'.join(lst) 
df[df['url'].str.contains(pat)] 

Out[31]: 
      url 
10 apple iphone 
11  samsumg 
13   None 
14   None 
15   None 

欠損値を処理するには、ブール条件でpd.isNull(df['url'])を含める:

In [54]: 
lst = ['iphone', 'sony', 'alcatel', 'galaxy', 'samsumg'] 
pat = '|'.join(lst) 
df[pd.isnull(df['url']) | df['url'].str.contains(pat) ] 

Out[54]: 
      url 
10 apple iphone 
11  samsumg 
13   NaN 
14   NaN 
15   NaN 
+0

しかし、 –

+0

これらの値の文字列は 'None'か、実際は 'NaN'ですか?あなたの質問から不明です – EdChum

+0

彼らは空で、私はそれを保存します –

関連する問題