最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Pandas提取含有指定字符串的行(完全匹配,部分匹配)

 更新時(shí)間:2023年02月22日 10:33:12   作者:餃子大人  
本文主要介紹了Pandas提取含有指定字符串的行(完全匹配,部分匹配),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

以下內(nèi)容,如何使用pandas提取含有指定字符串的行的方法進(jìn)行解釋說明。

行的提?。ㄟx擇)方法

完全匹配

  • ==

部分匹配

  • str.contains():包含一個(gè)特定的字符串
    • 參數(shù)na:缺少值NaN處理
    • 參數(shù)case:大小寫我的處理
    • 參數(shù)regex:使用正則表達(dá)式模式
  • str.endswith():以特定字符串結(jié)尾
  • str.startswith():以特定的字符串開頭
  • str.match():匹配正則表達(dá)式模式

要提取部分匹配的行,可以使用pandas的(str.xxx())方法,根據(jù)指定條件提取的字符串方法。
這次以以下數(shù)據(jù)為例

import pandas as pd

df = pd.read_csv('./data/08/sample_pandas_normal.csv').head(3)
print(df)
# ? ? ? name ?age state ?point
# 0 ? ?Alice ? 24 ? ?NY ? ? 64
# 1 ? ? ?Bob ? 42 ? ?CA ? ? 92
# 2 ?Charlie ? 18 ? ?CA ? ? 70

行的提取(選擇)方法

首先,展示如何從pandas.DataFrame中提?。ㄟx擇)行以獲得新的pandas.DataFrame。

使用布爾值的布爾列表(數(shù)組)或pandas.Series的話,只能提?。ㄟx擇)True行。

mask = [True, False, True]
df_mask = df[mask]
print(df_mask)
#       name  age state  point
# 0    Alice   24    NY     64
# 2  Charlie   18    CA     70

因此,對(duì)于具有字符串元素的列,是否能夠獲得根據(jù)條件的布爾列表就足夠了。

完全匹配

==

如果元素與字符串完全匹配,則使用==獲取為True的pandas.Series。

print(df['state'] == 'CA')
# 0 ? ?False
# 1 ? ? True
# 2 ? ? True
# Name: state, dtype: bool

print(df[df['state'] == 'CA'])
# ? ? ? name ?age state ?point
# 1 ? ? ?Bob ? 42 ? ?CA ? ? 92
# 2 ?Charlie ? 18 ? ?CA ? ? 70

部分匹配

str.contains():包含一個(gè)特定的字符串

pandas.Series字符串方法str.contains()允許獲取包含特定字符串的pandas.Series.

print(df['name'].str.contains('li'))
# 0 ? ? True
# 1 ? ?False
# 2 ? ? True
# Name: name, dtype: bool

print(df[df['name'].str.contains('li')])
# ? ? ? name ?age state ?point
# 0 ? ?Alice ? 24 ? ?NY ? ? 64
# 2 ?Charlie ? 18 ? ?CA ? ? 70

請(qǐng)注意,默認(rèn)情況下,第一個(gè)參數(shù)中指定的字符串將作為正則表達(dá)式模式進(jìn)行處理,如下所述。

參數(shù)na:缺少值NaN處理

如果元素是缺失值NaN,則默認(rèn)情況下它將返回NaN而不是True或False。因此,使用pandas.Series提取該行是錯(cuò)誤的。

df_nan = df.copy()
df_nan.iloc[2, 0] = float('nan')
print(df_nan)
# ? ? name ?age state ?point
# 0 ?Alice ? 24 ? ?NY ? ? 64
# 1 ? ?Bob ? 42 ? ?CA ? ? 92
# 2 ? ?NaN ? 18 ? ?CA ? ? 70

print(df_nan['name'].str.contains('li'))
# 0 ? ? True
# 1 ? ?False
# 2 ? ? ?NaN
# Name: name, dtype: object

# print(df_nan[df_nan['name'].str.contains('li')])
# ValueError: cannot index with vector containing NA / NaN values

可以通過str.contains()的參數(shù)na來指定替換NaN結(jié)果的值。

print(df_nan['name'].str.contains('li', na=False))
# 0 ? ? True
# 1 ? ?False
# 2 ? ?False
# Name: name, dtype: bool

print(df_nan['name'].str.contains('li', na=True))
# 0 ? ? True
# 1 ? ?False
# 2 ? ? True
# Name: name, dtype: bool

用作條件時(shí),如果na = True,則選擇NaN的行,如果na = False,則不選擇NaN的行。

參數(shù)case:大小寫我的處理

默認(rèn)情況下,區(qū)分大小寫。如果參數(shù)case為False,則case被忽略。

print(df['name'].str.contains('LI'))
# 0 ? ?False
# 1 ? ?False
# 2 ? ?False
# Name: name, dtype: bool

print(df['name'].str.contains('LI', case=False))
# 0 ? ? True
# 1 ? ?False
# 2 ? ? True
# Name: name, dtype: bool

參數(shù)regex:使用正則表達(dá)式模式

使用str.contains()時(shí)要記住的一件事是,默認(rèn)情況下,指定為第一個(gè)參數(shù)的字符串將作為正則表達(dá)式模式進(jìn)行處理。

print(df['name'].str.contains('i.*e'))
# 0     True
# 1    False
# 2     True
# Name: name, dtype: bool

如果參數(shù)ragex為False,則確定是否包含第一個(gè)參數(shù)的字符串本身。

print(df['name'].str.contains('i.*e', regex=False))
# 0    False
# 1    False
# 2    False
# Name: name, dtype: bool

例如,如果要判斷是否包含正則表達(dá)式的特殊字符,例如?,。,*,則需要設(shè)置regex = False。當(dāng)然,可以指定一個(gè)正則表達(dá)式模式,以轉(zhuǎn)義\?等特殊字符。

請(qǐng)注意,默認(rèn)值可能會(huì)導(dǎo)致錯(cuò)誤。

df_q = df.copy()
df_q.iloc[2, 0] += '?'
print(df_q)
# ? ? ? ?name ?age state ?point
# 0 ? ? Alice ? 24 ? ?NY ? ? 64
# 1 ? ? ? Bob ? 42 ? ?CA ? ? 92
# 2 ?Charlie? ? 18 ? ?CA ? ? 70

# print(df_q['name'].str.contains('?'))
# error: nothing to repeat at position 0

print(df_q['name'].str.contains('?', regex=False))
# 0 ? ?False
# 1 ? ?False
# 2 ? ? True
# Name: name, dtype: bool

print(df_q['name'].str.contains('\?'))
# 0 ? ?False
# 1 ? ?False
# 2 ? ? True
# Name: name, dtype: bool

str.contains()等同于re.search(),并且可以在flags參數(shù)中指定正則表達(dá)式標(biāo)志。如稍后所述,還有對(duì)應(yīng)于re.match()的str.match()。

請(qǐng)注意,下面要介紹的str.endswith()如果想要確定end ?,會(huì)更容易,如本例所示。

str.endswith():以特定字符串結(jié)尾

pandas.Series字符串方法str.endswith()可以獲取以特定字符串結(jié)尾的pandas.Series。

print(df['name'].str.endswith('e'))
# 0 ? ? True
# 1 ? ?False
# 2 ? ? True
# Name: name, dtype: bool

print(df[df['name'].str.endswith('e')])
# ? ? ? name ?age state ?point
# 0 ? ?Alice ? 24 ? ?NY ? ? 64
# 2 ?Charlie ? 18 ? ?CA ? ? 70

str.endswith()也有一個(gè)參數(shù)na。如果要選擇缺失值NaN的行,則設(shè)置na = True;如果不想選擇,則將na = False設(shè)置。

沒有參數(shù)case,因此它始終區(qū)分大小寫。

另外,第一個(gè)參數(shù)的字符串在確定中照原樣使用,而不作為正則表達(dá)式模式處理。

str.startswith():以特定的字符串開頭

pandas.Series字符串方法str.startswith()可以獲取以特定字符串開頭的pandas.Series。

print(df['name'].str.startswith('B'))
# 0 ? ?False
# 1 ? ? True
# 2 ? ?False
# Name: name, dtype: bool

print(df[df['name'].str.startswith('B')])
# ? name ?age state ?point
# 1 ?Bob ? 42 ? ?CA ? ? 92

str.match():匹配正則表達(dá)式模式

pandas.Series字符串方法str.match()可以獲取與正則表達(dá)式模式匹配的pandas.Series。

print(df['name'].str.match('.*i.*e'))
# 0 ? ? True
# 1 ? ?False
# 2 ? ? True
# Name: name, dtype: bool

print(df[df['name'].str.match('.*i.*e')])
# ? ? ? name ?age state ?point
# 0 ? ?Alice ? 24 ? ?NY ? ? 64
# 2 ?Charlie ? 18 ? ?CA ? ? 70

如上所述,str.match()對(duì)應(yīng)于re.match(),并確定字符串的開頭是否與模式匹配。如果不是一開始就為False。

print(df['name'].str.match('.*i'))
# 0 ? ? True
# 1 ? ?False
# 2 ? ? True
# Name: name, dtype: bool

print(df['name'].str.match('i.*e'))
# 0 ? ?False
# 1 ? ?False
# 2 ? ?False
# Name: name, dtype: bool

當(dāng)需要確定是否包括與模式匹配的部分時(shí),不僅在開始時(shí),而且默認(rèn)使用與上述re.search()等效的re.contains()(regex = True)。

str.match()與str.contains()可以以相同的方式指定參數(shù)na,case和flag。

到此這篇關(guān)于Pandas提取含有指定字符串的行(完全匹配,部分匹配)的文章就介紹到這了,更多相關(guān)Pandas提取指定字符串的行內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python如何使用OS模塊調(diào)用cmd

    Python如何使用OS模塊調(diào)用cmd

    這篇文章主要介紹了Python如何使用OS模塊調(diào)用 cmd,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Python實(shí)現(xiàn)K-means聚類算法并可視化生成動(dòng)圖步驟詳解

    Python實(shí)現(xiàn)K-means聚類算法并可視化生成動(dòng)圖步驟詳解

    這篇文章主要介紹了Python實(shí)現(xiàn)K-means聚類算法并可視化生成動(dòng)圖,本文分步驟給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-05-05
  • python 列表、字典和集合的添加和刪除操作

    python 列表、字典和集合的添加和刪除操作

    今天小編就為大家分享一篇python 列表、字典和集合的添加和刪除操作,有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python中創(chuàng)建相關(guān)系數(shù)矩陣的方法小結(jié)

    Python中創(chuàng)建相關(guān)系數(shù)矩陣的方法小結(jié)

    相關(guān)系數(shù)矩陣是一種用于衡量變量之間關(guān)系的重要工具,本文將介紹在 Python 中創(chuàng)建相關(guān)系數(shù)矩陣的不同方法,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-12-12
  • 分步驟教你用python一步步提取PPT中的圖片

    分步驟教你用python一步步提取PPT中的圖片

    今天要帶大家實(shí)現(xiàn)的是PPT圖片的提取。在我們學(xué)習(xí)工作中,PPT的使用還是非常頻繁的,但是自己做PPT是很麻煩的,所以就需要用到別人的模板或者素材,這個(gè)時(shí)候提取PPT圖片就可以減少我們很多工作。
    2021-09-09
  • python讀取excel表格生成erlang數(shù)據(jù)

    python讀取excel表格生成erlang數(shù)據(jù)

    這篇文章主要為大家詳細(xì)介紹了python讀取excel表格生成erlang數(shù)據(jù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Pycharm2020.1安裝中文語言插件的詳細(xì)教程(不需要漢化)

    Pycharm2020.1安裝中文語言插件的詳細(xì)教程(不需要漢化)

    這篇文章主要介紹了Pycharm2020.1安裝中文語言插件的詳細(xì)教程,不需要漢化,本文給大家分享三種方法,在這小編推薦使用方法二,具體內(nèi)容詳情大家跟隨小編一起看看吧
    2020-08-08
  • python向字符串中添加元素的實(shí)例方法

    python向字符串中添加元素的實(shí)例方法

    在本篇文章里小編給大家分享了關(guān)于python向字符串中添加元素的實(shí)例方法以及相關(guān)知識(shí)點(diǎn)內(nèi)容,有需要的朋友們跟著學(xué)習(xí)參考下。
    2019-06-06
  • Python 詞典(Dict) 加載與保存示例

    Python 詞典(Dict) 加載與保存示例

    今天小編就為大家分享一篇Python 詞典(Dict) 加載與保存示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Jupyter notebook 輸出部分顯示不全的解決方案

    Jupyter notebook 輸出部分顯示不全的解決方案

    這篇文章主要介紹了Jupyter notebook 輸出部分顯示不全的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04

最新評(píng)論

衡南县| 济南市| 博乐市| 太康县| 当阳市| 河东区| 新营市| 桐乡市| 牟定县| 建宁县| 潮安县| 开化县| 松潘县| 阿城市| 黄浦区| 巴东县| 五指山市| 宁波市| 盐津县| 台山市| 徐闻县| 永川市| 岳阳市| 鄂尔多斯市| 蓬溪县| 麻城市| 瑞安市| 沙湾县| 清远市| 沙雅县| 柏乡县| 阆中市| 常州市| 晋中市| 太保市| 蓝山县| 突泉县| 梓潼县| 明星| 日土县| 府谷县|