欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Pandas使用分隔符或正則表達(dá)式將字符串拆分為多列

 更新時間:2023年02月22日 10:46:17   作者:餃子大人  
本文主要介紹了Pandas使用分隔符或正則表達(dá)式將字符串拆分為多列,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

Pandas如何將帶有字符串元素的列拆分為多個列。

使用以下字符串的方法。

  • str.split():用定界符分割
  • str.extract():按正則表達(dá)式拆分

字符串方法是pandas.Series方法。

適用于pandas.Series或pandas.DataFrame列

str.split():用定界符分割

要按定界符(delimiter)進(jìn)行拆分,使用字符串方法str.split()。

pandas.Series

以以下pandas.Series為例。

import pandas as pd

s_org = pd.Series(['aaa@xxx.com', 'bbb@yyy.com', 'ccc@zzz.com', 'ddd'], index=['A', 'B', 'C', 'D'])
print(s_org)
print(type(s_org))
# A ? ?aaa@xxx.com
# B ? ?bbb@yyy.com
# C ? ?ccc@zzz.com
# D ? ? ? ? ? ?ddd
# dtype: object
# <class 'pandas.core.series.Series'>

將定界符指定為第一個參數(shù)。一個pandas.Series元素作為拆分字符串的列表返回。

s = s_org.str.split('@')
print(s)
print(type(s))
# A    [aaa, xxx.com]
# B    [bbb, yyy.com]
# C    [ccc, zzz.com]
# D             [ddd]
# dtype: object
# <class 'pandas.core.series.Series'>

指定split = True作為參數(shù)可分為多個列并以pandas.DataFrame的形式獲取。默認(rèn)值為expand = False。

沒有足夠的行劃分的元素為“無(None)”。

df = s_org.str.split('@', expand=True)
print(df)
print(type(df))
#      0        1
# A  aaa  xxx.com
# B  bbb  yyy.com
# C  ccc  zzz.com
# D  ddd     None
# <class 'pandas.core.frame.DataFrame'>

可以在列中指定獲取的pandas.DataFrame的列名。

df.columns = ['local', 'domain']
print(df)
#   local   domain
# A   aaa  xxx.com
# B   bbb  yyy.com
# C   ccc  zzz.com
# D   ddd     None

pandas.DataFrame

如果要通過將pandas.DataFrame的特定列拆分為多列來更新它,這會有些乏味??赡苡懈玫姆椒?。

以先前創(chuàng)建的pandas.DataFrame為例。

print(df)
#   local   domain
# A   aaa  xxx.com
# B   bbb  yyy.com
# C   ccc  zzz.com
# D   ddd     None

在特定的列上使用str.split()獲得一個拆分的pandas.DataFrame。

print(df['domain'].str.split('.', expand=True))
#       0     1
# A   xxx   com
# B   yyy   com
# C   zzz   com
# D  None  None

使用pd.concat()與原始pandas.DataFrame進(jìn)行串聯(lián)(聯(lián)接),并使用drop()方法刪除原始列。

df2 = pd.concat([df, df['domain'].str.split('.', expand=True)], axis=1).drop('domain', axis=1)
print(df2)
#   local     0     1
# A   aaa   xxx   com
# B   bbb   yyy   com
# C   ccc   zzz   com
# D   ddd  None  None

如果剩余的列很少,則只能選擇與pd.concat()串聯(lián)(聯(lián)接)時所需的列。

df3 = pd.concat([df['local'], df['domain'].str.split('.', expand=True)], axis=1)
print(df3)
#   local     0     1
# A   aaa   xxx   com
# B   bbb   yyy   com
# C   ccc   zzz   com
# D   ddd  None  None

要重命名特定的列,請使用rename()方法。

df3.rename(columns={0: 'second_LD', 1: 'TLD'}, inplace=True)
print(df3)
#   local second_LD   TLD
# A   aaa       xxx   com
# B   bbb       yyy   com
# C   ccc       zzz   com
# D   ddd      None  None

參考文章

Pandas.DataFrame的行名和列名的修改

str.extract():按正則表達(dá)式拆分

使用字符串方法str.extract()分割正則表達(dá)式。

以以下pandas.Series為例。

import pandas as pd

s_org = pd.Series(['aaa@xxx.com', 'bbb@yyy.com', 'ccc@zzz.com', 'ddd'], index=['A', 'B', 'C', 'D'])
print(s_org)
# A ? ?aaa@xxx.com
# B ? ?bbb@yyy.com
# C ? ?ccc@zzz.com
# D ? ? ? ? ? ?ddd
# dtype: object

在第一個參數(shù)中指定正則表達(dá)式。對于每個與正則表達(dá)式中用()括起來的組部分匹配的字符串,均對其進(jìn)行劃分。

提取多個組時,無論參數(shù)expand如何,都將返回pandas.DataFrame。

如果不匹配,則為NaN。

df = s_org.str.extract('(.+)@(.+)\.(.+)', expand=True)
print(df)
# ? ? ?0 ? ?1 ? ?2
# A ?aaa ?xxx ?com
# B ?bbb ?yyy ?com
# C ?ccc ?zzz ?com
# D ?NaN ?NaN ?NaN

df = s_org.str.extract('(.+)@(.+)\.(.+)', expand=False)
print(df)
# ? ? ?0 ? ?1 ? ?2
# A ?aaa ?xxx ?com
# B ?bbb ?yyy ?com
# C ?ccc ?zzz ?com
# D ?NaN ?NaN ?NaN

如果只有一組,則當(dāng)參數(shù)expand = True時返回pandas.DataFrame,如果expand = False則返回pandas.Series。

df_single = s_org.str.extract('(\w+)', expand=True)
print(df_single)
print(type(df_single))
# ? ? ?0
# A ?aaa
# B ?bbb
# C ?ccc
# D ?ddd
# <class 'pandas.core.frame.DataFrame'>

s = s_org.str.extract('(\w+)', expand=False)
print(s)
print(type(s))
# A ? ?aaa
# B ? ?bbb
# C ? ?ccc
# D ? ?ddd
# dtype: object
# <class 'pandas.core.series.Series'>

Expand = False是當(dāng)前版本0.22.0中的默認(rèn)值,但expand = True將是將來的默認(rèn)值。

FutureWarning: currently extract(expand=None) means expand=False (return Index/Series/DataFrame) 
but in a future version of pandas this will be changed to expand=True (return DataFrame)

如果對正則表達(dá)式模式使用命名組(?P …),則該名稱將按原樣是列名。

df_name = s_org.str.extract('(?P<local>.*)@(?P<second_LD>.*)\.(?P<TLD>.*)', expand=True)
print(df_name)
#   local second_LD  TLD
# A   aaa       xxx  com
# B   bbb       yyy  com
# C   ccc       zzz  com
# D   NaN       NaN  NaN

如果要通過將pandas.DataFrame的特定列劃分為多個列來進(jìn)行更新,請參考上面的str.split()示例。使用pd.concat()連接(聯(lián)接)原始的pandas.DataFrame并使用drop()方法刪除原始的列。

到此這篇關(guān)于Pandas使用分隔符或正則表達(dá)式將字符串拆分為多列的文章就介紹到這了,更多相關(guān)Pandas 字符串拆分為多列內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Django 實(shí)現(xiàn)jwt認(rèn)證的示例

    Django 實(shí)現(xiàn)jwt認(rèn)證的示例

    這篇文章主要介紹了Django 實(shí)現(xiàn)jwt 認(rèn)證的示例,幫助大家更好的理解和學(xué)習(xí)使用django,感興趣的朋友可以了解下
    2021-04-04
  • python中加背景音樂如何操作

    python中加背景音樂如何操作

    在本篇文章里小編給大家整理了關(guān)于在python中加背景音樂的方法,需要的朋友們可以參考下。
    2020-07-07
  • Python中sys模塊功能與用法實(shí)例詳解

    Python中sys模塊功能與用法實(shí)例詳解

    這篇文章主要介紹了Python中sys模塊功能與用法,結(jié)合實(shí)例形式詳細(xì)分析了Python sys模塊基本功能、原理、使用方法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-02-02
  • python requests完成接口文件上傳的案例

    python requests完成接口文件上傳的案例

    這篇文章主要介紹了python requests完成接口文件上傳的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Python可變和不可變、類的私有屬性實(shí)例分析

    Python可變和不可變、類的私有屬性實(shí)例分析

    這篇文章主要介紹了Python可變和不可變、類的私有屬性,結(jié)合實(shí)例形式分析了Python值可變與不可變的情況及內(nèi)存地址變化,類的私有屬性定義、訪問相關(guān)操作技巧,需要的朋友可以參考下
    2019-05-05
  • python中常用的內(nèi)置模塊匯總

    python中常用的內(nèi)置模塊匯總

    Python內(nèi)置的模塊有很多,我們也已經(jīng)接觸了不少相關(guān)模塊,接下來咱們就來做一些匯總和介紹,在此我會整理出項(xiàng)目開發(fā)最常用的來進(jìn)行講解,感興趣的朋友跟隨小編一起看看吧
    2022-01-01
  • Python中extend和append的區(qū)別講解

    Python中extend和append的區(qū)別講解

    今天小編就為大家分享一篇關(guān)于Python中extend和append的區(qū)別講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • 使用python+pygame實(shí)現(xiàn)中秋節(jié)動畫效果

    使用python+pygame實(shí)現(xiàn)中秋節(jié)動畫效果

    馬上就要中秋節(jié)了,使用python可以實(shí)現(xiàn)中秋節(jié)動畫效果,包括月亮、兔子和煙花嗎?當(dāng)然是可以的,那該如何實(shí)現(xiàn)呢?這篇文章我們主要使用pygame來實(shí)現(xiàn),文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下
    2023-09-09
  • python解析yaml文件過程詳解

    python解析yaml文件過程詳解

    這篇文章主要介紹了python解析yaml文件過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • Django異步任務(wù)之Celery的基本使用

    Django異步任務(wù)之Celery的基本使用

    這篇文章主要給大家介紹了關(guān)于Django異步任務(wù)之Celery使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Django具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03

最新評論