2017-06-18 27 views
1

2017 developer survey resultsを操作しています。私はの文字列Pythonを含む行をHaveWorkedLanguage列に分離したいと考えています。各文字列が正規表現にマッチするかどうかを判断し特定の文字列のみを含むpandasデータフレームの行の選択(複数の文字列を含む)

:私はどのべきpandas.Series.str.matchを使用してみました

0             Swift 
1       JavaScript; Python; Ruby; SQL 
2          Java; PHP; Python 
3          Python; R; SQL 
4             NaN 
5         JavaScript; PHP; Rust 
6          Matlab; Python 
7  CoffeeScript; Clojure; Elixir; Erlang; Haskell 
8          C#; JavaScript 
9         Objective-C; Swift 
10            R; SQL 
11             NaN 
12           C; C++; Java 
13       Java; JavaScript; Ruby; SQL 
14          Assembly; C; C++ 
15         JavaScript; VB.NET 
16           JavaScript 
17      Python; Matlab; Rust; SQL; Swift 
18            Python 
19           Perl; Python 
20             NaN 
21         C#; JavaScript; SQL 
22             Java 
23           Python; SQL 
24             NaN 
25           Java; Scala 
26   Java; JavaScript; Objective-C; Python; Swift 
27             NaN 
28            Python 
29             NaN 
... 

:そのdf['HaveWorkedLanguage']列がどのように見えるか

これ。ここで

import pandas as pd 
df = pd.read_csv("survey_results_public.csv") 
rows_w_Python = df[df['HaveWorkedLanguage'].str.match("Python", na=False)]['HaveWorkedLanguage'] 

問題示し、これは最初のエントリとしてPythonを含むこれらの行を選択することであるように

、それらresulstsれ、のみPythonを含まないで:

3          Python; R; SQL 
17      Python; Matlab; Rust; SQL; Swift 
18            Python 
23           Python; SQL 
28            Python 
... 

Pythonだけを含む行を保持するにはどうすればよいですか?

+0

多分 '代わりに、文字列の正規表現としてr'Python''は、「Pythonの – KyrSt

+0

あなたが代わりにある' Python'の 'R "はPythonを"'使用することを意味上記のコマンド?それを試し、変更はありません。 – Gabriel

+2

"Pythonのみ"では正規表現が必要ですか? 'df ['HaveWorkedLanguage'] == 'Python'はそのためのブールフィルタを作成する必要があります。 – ayhan

答えて

2

完全一致の場合は、==オペレータで十分です。正規表現は必要ありません。

df['HaveWorkedLanguage'] == 'Python'は値が正確に 'Python'のブール値フィルタを返します。データフレームの利回りにこのフィルタを渡す

df[df['HaveWorkedLanguage'] == 'Python'] 
Out: 
    HaveWorkedLanguage 
18    Python 
28    Python 
関連する問題