91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Pandas怎么使用分隔符或正則表達式將字符串拆分為多列

發布時間:2023-02-22 11:17:06 來源:億速云 閱讀:134 作者:iii 欄目:開發技術

這篇“Pandas怎么使用分隔符或正則表達式將字符串拆分為多列”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Pandas怎么使用分隔符或正則表達式將字符串拆分為多列”文章吧。

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

適用于pandas.Series或pandas.DataFrame列

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

要按定界符(delimiter)進行拆分,使用字符串方法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'>

將定界符指定為第一個參數。一個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作為參數可分為多個列并以pandas.DataFrame的形式獲取。默認值為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的特定列拆分為多列來更新它,這會有些乏味。可能有更好的方法。

以先前創建的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進行串聯(聯接),并使用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()串聯(聯接)時所需的列。

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():按正則表達式拆分

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

以以下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

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

提取多個組時,無論參數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

如果只有一組,則當參數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是當前版本0.22.0中的默認值,但expand = True將是將來的默認值。

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)

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

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的特定列劃分為多個列來進行更新,請參考上面的str.split()示例。使用pd.concat()連接(聯接)原始的pandas.DataFrame并使用drop()方法刪除原始的列。

以上就是關于“Pandas怎么使用分隔符或正則表達式將字符串拆分為多列”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

桓仁| 慈溪市| 宁河县| 黄大仙区| 齐齐哈尔市| 长乐市| 阳高县| 民和| 屯留县| 东至县| 白沙| 老河口市| 山东| 长泰县| 巩留县| 灌云县| 师宗县| 敦煌市| 延寿县| 商丘市| 道孚县| 门源| 烟台市| 普定县| 环江| 酒泉市| 邯郸市| 兴隆县| 彰化市| 游戏| 马龙县| 德安县| 焉耆| 韩城市| 微博| 罗定市| 界首市| 广平县| 左贡县| 蚌埠市| 日土县|