天天看點

盤點一個Pandas中explode()爆炸函數應用實際案例

作者:CDA資料分析師
盤點一個Pandas中explode()爆炸函數應用實際案例

作者:Python進階者

來源:Python爬蟲與資料挖掘

前言

偶然想對資料分列多一些操作,但是遇到了問題,如下圖所示。

盤點一個Pandas中explode()爆炸函數應用實際案例

上圖這個是原始資料,但是現在想要下圖這樣的效果,怎麼破呢?

盤點一個Pandas中explode()爆炸函數應用實際案例

這個問題竟然在網上找了很久,沒有找到合适的,也許是我問問題的沒有問到點子上,不過還好比較幸運,在才哥群裡有【1px】、【貓藥師Kelly】大佬給出了思路和答案。

一、思路

一開始想到的是使用Excel進行分列,這個操作我自然熟悉了,隻不過列是分割了,但是其他的行資料沒有一起跟過來,如果你說大不了複制粘貼呗,也花不了幾秒鐘,我覺得也是沒毛病的,這也确實是一直思路,不死磕也行。

盤點一個Pandas中explode()爆炸函數應用實際案例

不過不要慌,問題不大,這裡給出【1px】大佬給出的解決方法,拍案驚奇!

盤點一個Pandas中explode()爆炸函數應用實際案例

二、解決方案

針對該問題,其實有兩個方法,第一個是【麥叔】書中給出的openpyxl庫進行拆解,如下圖所示:

盤點一個Pandas中explode()爆炸函數應用實際案例

第二個是使用pandas中的explode()函數,這裡直接給出【1px】大佬答案,如下圖所示:

盤點一個Pandas中explode()爆炸函數應用實際案例

其實關鍵點就是pandas中的爆炸函數explode(),早在之前我看到過有人用這個,隻是一直不知道怎麼用,今天在這裡算是漲知識了。

import pandas as pd

df = pd.read_excel('keywords.xlsx')

# ['序号', '年份', '來源出版物名稱', '索引關鍵字'

df.columns

df.loc[:, ['索引關鍵字']] = df['索引關鍵字'].str.split(";") # expand=True 可以把用分割的内容直接分列

df.head()

df.explode(column='索引關鍵字')

最後得到預取的效果如下圖所示:

盤點一個Pandas中explode()爆炸函數應用實際案例

上面我隻是拿一行資料進行測試,接下來使用多行進行測試看看:

盤點一個Pandas中explode()爆炸函數應用實際案例

代碼運作之後,發現都可以滿足要求:

盤點一個Pandas中explode()爆炸函數應用實際案例

三、總結

我是Python進階者。本文基于實際過程中遇到的Excel資料拓展分列的問題,使用pandas中的explode()函數順利完成解答,一個小題目,幫助自己和大家加深對該函數的認識。

繼續閱讀