[英]Select rows (with multiple strings) in pandas dataframe that contain only a given string
我正在處理2017年開發人員調查結果 。 我想在HaveWorkedLanguage
列中隔離僅包含字符串Python
的行。
df['HaveWorkedLanguage']
列如下所示:
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
...
我嘗試使用pandas.Series.str.match它應該:
確定每個字符串是否與正則表達式匹配。
如這里所示
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
作為第一條目,而不是那些僅含有Python
,其resulsts在:
3 Python; R; SQL
17 Python; Matlab; Rust; SQL; Swift
18 Python
23 Python; SQL
28 Python
...
如何保留僅包含Python
的行?
對於精確匹配, ==
運算符就足夠了。 它不需要正則表達式。
df['HaveWorkedLanguage'] == 'Python'
返回一個布爾過濾器,其值正好是'Python'。
將此過濾器傳遞給DataFrame將產生:
df[df['HaveWorkedLanguage'] == 'Python']
Out:
HaveWorkedLanguage
18 Python
28 Python
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.