5、pandas的字符串的分割之str.split()

分列在我們日常工作中經(jīng)常用到,從各種系統(tǒng)中導出的什么訂單號、名稱、日期很多都是復合組成的,這些列在匹配、合并時沒有辦法使用,我們經(jīng)常需要將她們分開。

像下面的DataFrame, 城市是復合的,變電站也是復合的,我們只需要一部分,要怎么操作呢?

DataFrame數(shù)據(jù)

網(wǎng)上搜索了一下,以前的做法是將要分的那列迭代并用split()分開,然后將分開后的數(shù)據(jù)新建一個DataFrame,然后再與原數(shù)據(jù)合并。比較復雜,大概的代碼如下:

使用split和merge函數(shù)

其實原理清楚的話也不是很復雜。

當然我這里還有稍微簡單的辦法,其實原理基本一樣,只是不再使用迭代,只需要df['柜臺名稱'].str.split('-')取代 x.split('-') for x in df['柜臺名稱']

使用str.split分列

我們看到出來的結果已經(jīng)有索引和列名,明顯已經(jīng)是一個DataFrame了,這就是參數(shù)expand=True的作用。

指定expand=True生成DataFrame

在這里新的DataFrame和原數(shù)據(jù)df都是使用的默認索引,索引是一致的,可以以索引為鍵,使用merge()合并。如果索引不同的話,就需要重新設置索引了。

使用merge函數(shù)連接
使用merge函數(shù)連接(簡潔版)

注意:如果直接用某一列和split()來分列是不行的,因為Series數(shù)據(jù)類型是沒有split()的,所以需要先用.str將這一列轉換為類似字符串的格式,就能夠使用split()了。

str.split()有三個參數(shù):第一個參數(shù)就是引號里的內容:就是分列的依據(jù),可以是空格,符號,字符串等等。

按字符串分列

在上面這個圖里,使用‘岸’作為分列依據(jù),含有岸行就分開了。

第二個參數(shù)就是前面用到的expand=True,這個參數(shù)直接將分列后的結果轉換成DataFrame。

第三個參數(shù)n=數(shù)字就是限制分列的次數(shù)。

就是當用于分列的依據(jù)符號在有多個的話需要指定分列的次數(shù)(不指定的話就會根據(jù)符號有幾個分列幾次)。

我們先修改一下df的數(shù)據(jù):

DataFrame數(shù)據(jù)

默認全部分列:

默認不選n的參數(shù)
n=1和n=2

如果我想從最右邊的開始找分列的依據(jù),可以使用rsplit(),rsplit和split()的用法類似,一個從右邊開始,一個從左邊開始。

使用rsplit函數(shù)
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容