簡體   English   中英

在pandas數據框中選擇僅包含給定字符串的行(具有多個字符串)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM