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

Pandas實現(xiàn)一列數(shù)據(jù)分隔為兩列

 更新時間:2020年05月18日 14:25:35   作者:Dennis_Shaw  
這篇文章主要介紹了Pandas實現(xiàn)一列數(shù)據(jù)分隔為兩列,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

分割成一個包含兩個元素列表的列

對于一個已知分隔符的簡單分割(例如,用破折號分割或用空格分割).str.split() 方法就足夠了 。 它在字符串的列(系列)上運行,并返回列表(系列)。

>>> import pandas as pd
>>> df = pd.DataFrame({'AB': ['A1-B1', 'A2-B2']})
>>> df

  AB
0 A1-B1
1 A2-B2
>>> df['AB_split'] = df['AB'].str.split('-')
>>> df

  AB AB_split
0 A1-B1 [A1, B1]
1 A2-B2 [A2, B2]

分割成兩列,每列包含列表的相應(yīng)元素

下面來看下如何從:分割成一個包含兩個元素列表的列至分割成兩列,每列包含列表的相應(yīng)元素。

>>> df['AB'].str[0]

0 A
1 A
Name: AB, dtype: object

>>> df['AB'].str[1]

0 1
1 2
Name: AB, dtype: object

因此可以得到

>>> df['AB'].str.split('-', 1).str[0]

0 A1
1 A2
Name: AB, dtype: object

>>> df['AB'].str.split('-', 1).str[1]

0 B1
1 B2
Name: AB, dtype: object

可以通過如下代碼將pandas的一列分成兩列:

>>> df['A'], df['B'] = df['AB'].str.split('-', 1).str
>>> df

  AB AB_split A B
0 A1-B1 [A1, B1] A1 B1
1 A2-B2 [A2, B2] A2 B2

補充知識:pandas某一列中每一行拆分成多行的方法

在處理數(shù)據(jù)過程中,常會遇到將一條數(shù)據(jù)拆分成多條,比如一個人的地址信息中,可能有多條地址,既有家庭地址也有工作地址,還有電話信息等等類似的情況,實際使用數(shù)據(jù)的時候又需要分開處理,這個時候就需要將這一條數(shù)據(jù)進行拆分成多條,以方便使用。

在pandas中如何對DataFrame進行相關(guān)操作呢,經(jīng)查閱相關(guān)資料,發(fā)現(xiàn)了一個簡單的辦法,

info.drop(['city'], axis=1).join(info['city'].str.split(' ', expand=True).stack().reset_index(level=1, drop=True).rename('city'))

看起來非常之長,分開來看,流程如下:

將需要拆分的數(shù)據(jù)使用split拆分工具拆分,并使用expand功能拆分成多列

將拆分后的多列數(shù)據(jù)進行列轉(zhuǎn)行操作(stack),合并成一列

將生成的復(fù)合索引重新進行reset保留原始的索引,并命名

將上面處理后的DataFrame和原始DataFrame進行join操作,默認使用的是索引進行連接

具體操作如下:

預(yù)操作:生成需要使用的DataFrame

# 用來生成DataFrame的工具
from pydbgen import pydbgen
myDB=pydbgen.pydb()

# 生成一個DataFrame
info = myDB.gen_dataframe(10,['name','phone','city','state'])

結(jié)果如下:

name phone-number city state
0 Hannah Richard 810-859-7815 Irwinville Louisiana
1 Ronald Berry 591-564-0585 Glen Ellen Minnesota
2 Caitlin Barron 969-840-8580 Dubois Oklahoma
3 Felicia Stephens 154-858-1233 Veedersburg Alaska
4 Shelly Dennis 343-104-9365 Mattapex Virginia
5 Nicholas Hill 992-239-1954 Moneta Minnesota
6 Steve Bradshaw 164-081-7811 Ten Broeck Colorado
7 Gail Johnston 155-259-9514 Wayan Virginia
8 John Gray 409-892-4716 Darlington Pennsylvania
9 Katherine Bautista 185-861-1677 McNab Texas

假如現(xiàn)在我們要對city列進行進行拆分,按照空格拆分,轉(zhuǎn)換成多行的數(shù)據(jù),
第一步:拆分,生成多列

info_city = info['city'].str.split(' ', expand=True)

結(jié)果如下:

0 1
0 Irwinville None
1 Glen Ellen
2 Dubois None
3 Veedersburg None
4 Mattapex None
5 Moneta None
6 Ten Broeck
7 Wayan None
8 Darlington None
9 McNab None

可以看到已經(jīng)將原始數(shù)據(jù)拆分成了2列,對于無法拆分的數(shù)據(jù)為None

第二步:行轉(zhuǎn)列

info_city = info_city.stack()

結(jié)果如下:

0 0 Irwinville
1 0 Glen
1 Ellen
2 0 Dubois
3 0 Veedersburg
4 0 Mattapex
5 0 Moneta
6 0 Ten
1 Broeck
7 0 Wayan
8 0 Darlington
9 0 McNab

其中前面兩列是索引,返回的是一個series,沒有名字的series

第三步:重置索引,并命名(并刪除多于的索引)

info_city = info_city.reset_index(level=1, drop=True)

結(jié)果如下:

0 Irwinville
1 Glen
1 Ellen
2 Dubois
3 Veedersburg
4 Mattapex
5 Moneta
6 Ten
6 Broeck
7 Wayan
8 Darlington
9 McNab

第四步:和原始數(shù)據(jù)合并

info_new = info.drop(['city'], axis=1).join(info_city)

結(jié)果如下:

name phone-number state city
0 Hannah Richard 810-859-7815 Louisiana Irwinville
1 Ronald Berry 591-564-0585 Minnesota Glen
1 Ronald Berry 591-564-0585 Minnesota Ellen
2 Caitlin Barron 969-840-8580 Oklahoma Dubois
3 Felicia Stephens 154-858-1233 Alaska Veedersburg
4 Shelly Dennis 343-104-9365 Virginia Mattapex
5 Nicholas Hill 992-239-1954 Minnesota Moneta
6 Steve Bradshaw 164-081-7811 Colorado Ten
6 Steve Bradshaw 164-081-7811 Colorado Broeck
7 Gail Johnston 155-259-9514 Virginia Wayan
8 John Gray 409-892-4716 Pennsylvania Darlington
9 Katherine Bautista 185-861-1677 Texas McNab

需要特別注意的是,需要使用原始的連接新生成的,因為新生成的是一個series沒有join方法,也可以通過將生成的series通過to_frame方法轉(zhuǎn)換成DataFrame,這樣就沒有什么差異了

寫了這么多,記住下面的就行了:

info.drop([‘city'], axis=1).join(info[‘city'].str.split(' ', expand=True).stack().reset_index(level=1, drop=True).rename(‘city'))

如果原數(shù)據(jù)中已經(jīng)是list了,可以將info[‘city'].str.split(' ', expand=True)這部分替換成info[‘city'].apply(lambda x: pd.Series(x)),就可以達到相同的目的。

以上這篇Pandas實現(xiàn)一列數(shù)據(jù)分隔為兩列就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python如何在文件中部插入信息

    python如何在文件中部插入信息

    這篇文章主要介紹了python如何在文件中部插入信息問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Python中requests庫的概念及使用詳解

    Python中requests庫的概念及使用詳解

    這篇文章主要介紹了Python中requests庫的概念及使用詳解,urllib庫使用繁瑣,比如處理網(wǎng)頁驗證和Cookies時,需要編寫Opener和Handler來處理。為了更加方便的實現(xiàn)這些操作,就有了更為強大的requests庫,需要的朋友可以參考下
    2023-05-05
  • PyQt6中自定義浮點型滑塊類的實現(xiàn)

    PyQt6中自定義浮點型滑塊類的實現(xiàn)

    在PyQt6中,滑塊是常用的用戶界面元素之一,用于選擇數(shù)值范圍,本文主要介紹了PyQt6中自定義浮點型滑塊類的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • 淺析Python pandas模塊輸出每行中間省略號問題

    淺析Python pandas模塊輸出每行中間省略號問題

    這篇文章主要介紹Python pandas模塊輸出每行中間省略號問題,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-07-07
  • pygame實現(xiàn)貪吃蛇小游戲

    pygame實現(xiàn)貪吃蛇小游戲

    這篇文章主要為大家詳細介紹了pygame實現(xiàn)貪吃蛇小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 基于pytorch 預(yù)訓(xùn)練的詞向量用法詳解

    基于pytorch 預(yù)訓(xùn)練的詞向量用法詳解

    今天小編就為大家分享一篇基于pytorch 預(yù)訓(xùn)練的詞向量用法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • python發(fā)送HTTP請求的方法小結(jié)

    python發(fā)送HTTP請求的方法小結(jié)

    這篇文章主要介紹了python發(fā)送HTTP請求的方法,實例總結(jié)了GET、HEAD與POST方式發(fā)送http請求的相關(guān)技巧,需要的朋友可以參考下
    2015-07-07
  • 詳解Python中import模塊導(dǎo)入的實現(xiàn)原理

    詳解Python中import模塊導(dǎo)入的實現(xiàn)原理

    這篇文章主要給大家介紹了Python中import模塊導(dǎo)入的實現(xiàn)原理,主要從什么是模塊,import搜索路徑以及導(dǎo)入原理這三個方面給大家介紹,感興趣的小伙伴跟著小編一起來看看吧
    2023-08-08
  • Python黑帽編程 3.4 跨越VLAN詳解

    Python黑帽編程 3.4 跨越VLAN詳解

    VLAN(Virtual Local Area Network),是基于以太網(wǎng)交互技術(shù)構(gòu)建的虛擬網(wǎng)絡(luò),既可以將同一物理網(wǎng)絡(luò)劃分成多個VALN,也可以跨越物理網(wǎng)絡(luò)障礙,將不同子網(wǎng)中的用戶劃到同一個VLAN中。這篇文章主要介紹了Python黑帽編程 3.4 跨越VLAN 的相關(guān)資料,需要的朋友參考下
    2016-09-09
  • python3的數(shù)據(jù)類型及數(shù)據(jù)類型轉(zhuǎn)換實例詳解

    python3的數(shù)據(jù)類型及數(shù)據(jù)類型轉(zhuǎn)換實例詳解

    在本文里小編給大家分享的是關(guān)于python3的數(shù)據(jù)類型及數(shù)據(jù)類型轉(zhuǎn)換以及相關(guān)實例內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2019-08-08

最新評論