python分兩列輸出 python分兩列輸出

2021-10-21 04:44:00 字數 4815 閱讀 5807

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

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

>>> import pandas as pd

>>> df = pd.dataframe()

>>> df

ab0 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]

分割成兩列,每列包含列表的相應元素

下面來看下如何從:分割成乙個包含兩個元素列表的列至分割成兩列,每列包含列表的相應元素。

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

0 a1 a

name: ab, dtype: object

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

0 11 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某一列中每一行拆分成多行的方法

在處理資料過程中,常會遇到將一條資料拆分成多條,比如乙個人的位址資訊中,可能有多條位址,既有家庭位址也有工作位址,還有**資訊等等類似的情況,實際使用資料的時候又需要分開處理,這個時候就需要將這一條資料進行拆分成多條,以方便使用。

在pandas中如何對dataframe進行相關操作呢,經查閱相關資料,發現了乙個簡單的辦法,

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

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

將需要拆分的資料使用split拆分工具拆分,並使用expand功能拆分成多列

將拆分後的多列資料進行列轉行操作(stack),合併成一列

將生成的復合索引重新進行reset保留原始的索引,並命名

將上面處理後的dataframe和原始dataframe進行join操作,預設使用的是索引進行連線

具體操作如下:

預操作:生成需要使用的dataframe

# 用來生成dataframe的工具

from pydbgen import pydbgen

mydb=pydbgen.pydb()

# 生成乙個dataframe

info = mydb.gen_dataframe(10,['name','phone','city','state'])

結果如下:

name

phone-number

city

state

hannah richard

810-859-7815

irwinville

louisiana

ronald berry

591-564-0585

glen ellen

minnesota

caitlin barron

969-840-8580

dubois

oklahoma

felicia stephens

154-858-1233

veedersburg

alaska

shelly dennis

343-104-9365

mattapex

virginia

nicholas hill

992-239-1954

moneta

minnesota

steve bradshaw

164-081-7811

ten broeck

colorado

gail johnston

155-259-9514

wayan

virginia

john gray

409-892-4716

darlington

pennsylvania

katherine bautista

185-861-1677

mcnab

texas

假如現在我們要對city列進行進行拆分,按照空格拆分,轉換成多行的資料,

第一步:拆分,生成多列

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

結果如下:

irwinville

none

glen

ellen

dubois

none

veedersburg

none

mattapex

none

moneta

none

tenbroeck

wayan

none

darlington

none

mcnab

none

可以看到已經將原始資料拆分成了2列,對於無法拆分的資料為none

第二步:行轉列

info_city = info_city.stack()

結果如下:

irwinville

glen

ellen

dubois

veedersburg

mattapex

moneta

tenbroeck

wayan

darlington

mcnab

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

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

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

結果如下:

irwinville

glen

ellen

dubois

veedersburg

mattapex

moneta

tenbroeck

wayan

darlington

mcnab

第四步:和原始資料合併

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

結果如下:

name

phone-number

state

city

hannah richard

810-859-7815

louisiana

irwinville

ronald berry

591-564-0585

minnesota

glen

ronald berry

591-564-0585

minnesota

ellen

caitlin barron

969-840-8580

oklahoma

dubois

felicia stephens

154-858-1233

alaska

veedersburg

shelly dennis

343-104-9365

virginia

mattapex

nicholas hill

992-239-1954

minnesota

moneta

steve bradshaw

164-081-7811

colorado

tensteve bradshaw

164-081-7811

colorado

broeck

gail johnston

155-259-9514

virginia

wayan

john gray

409-892-4716

pennsylvania

darlington

katherine bautista

185-861-1677

texas

mcnab

需要特別注意的是,需要使用原始的連線新生成的,因為新生成的是乙個series沒有join方法,也可以通過將生成的series通過to_frame方法轉換成dataframe,這樣就沒有什麼差異了

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

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

在python中輸出 在輸出中列印Python版本

如何從指令碼中列印當前python安裝的版本號?嘗試import sys print sys.version 這將列印完整的版本資訊字串。如果您只想要python版本號,那麼bastien l onard的解決方案是最好的。您可能想檢查完整的字串,看看是否需要它或它的一部分。import platf...

7 63 分兩列 5分

一列縱隊在上課的時候會造成很大的麻煩,體育老師常用的辦法就是讓同學們1 2報數,然後報2的同學向後退一步。現在我們已經知道一列縱隊時候同學的學號分布,那麼你能輸出分成兩列後同學的學號麼?第一行包括乙個數n,表示班級裡有n位學生,班級人數至少是1,不超過100。第二行包括n個數,表示一列縱隊時每個同學...

python交換資料的兩列

python交換資料的兩列有兩種方式 第一種 在numpy中交換資料的兩列 上 1 import numpy as np 2 a np.array 1,2,3 4,5,6 3 a 4 array 1,2,3 5 4,5,6 6 a 0,1 a 1,0 7 a 8 array 3,2,1 9 6,5,...