盤點(diǎn)一個(gè)Pandas中explode()爆炸函數(shù)應(yīng)用實(shí)際案例
回復(fù)“書籍”即可獲贈(zèng)Python從入門到進(jìn)階共10本電子書
大家好,我是Python進(jìn)階者。
前言
前幾天在學(xué)習(xí)【麥?zhǔn)濉縋ython自動(dòng)化書本中案例的時(shí)候,偶然想對(duì)數(shù)據(jù)分列多一些操作,但是遇到了問題,如下圖所示。
上圖這個(gè)是原始數(shù)據(jù),但是現(xiàn)在想要下圖這樣的效果,怎么破呢?

這個(gè)問題竟然在網(wǎng)上找了很久,沒有找到合適的,也許是我問問題的沒有問到點(diǎn)子上,不過(guò)還好比較幸運(yùn),在才哥群里有【1px】、【貓藥師Kelly】大佬給出了思路和答案。
一、思路
一開始群友想到的是使用Excel進(jìn)行分列,這個(gè)操作我自然熟悉了,只不過(guò)列是分割了,但是其他的行數(shù)據(jù)沒有一起跟過(guò)來(lái),如果你說(shuō)大不了復(fù)制粘貼唄,也花不了幾秒鐘,我覺得也是沒毛病的,這也確實(shí)是一直思路,不死磕也行。
不過(guò)不要慌,問題不大,這里給出【1px】大佬給出的解決方法,拍案驚奇!

二、解決方案
針對(duì)該問題,其實(shí)有兩個(gè)方法,第一個(gè)是【麥?zhǔn)濉繒薪o出的openpyxl庫(kù)進(jìn)行拆解,如下圖所示:

第二個(gè)是使用pandas中的explode()函數(shù),這里直接給出【1px】大佬答案,如下圖所示:
其實(shí)關(guān)鍵點(diǎn)就是pandas中的爆炸函數(shù)explode(),早在之前我看到過(guò)有人用這個(gè),只是一直不知道怎么用,今天在這里算是漲知識(shí)了。
import pandas as pd
df = pd.read_excel('keywords.xlsx')
# ['序號(hào)', '年份', '來(lái)源出版物名稱', '索引關(guān)鍵字'
df.columns
df.loc[:, ['索引關(guān)鍵字']] = df['索引關(guān)鍵字'].str.split(";") # expand=True 可以把用分割的內(nèi)容直接分列
df.head()
df.explode(column='索引關(guān)鍵字')
最后得到預(yù)取的效果如下圖所示:
上面我只是拿一行數(shù)據(jù)進(jìn)行測(cè)試,接下來(lái)使用多行進(jìn)行測(cè)試看看:

代碼運(yùn)行之后,發(fā)現(xiàn)都可以滿足要求:

三、總結(jié)
我是Python進(jìn)階者。本文基于實(shí)際過(guò)程中遇到的Excel數(shù)據(jù)拓展分列的問題,使用pandas中的explode()函數(shù)順利完成解答,一個(gè)小題目,幫助自己和大家加深對(duì)該函數(shù)的認(rèn)識(shí)。
最后感謝【麥?zhǔn)濉俊ⅰ?px】、【貓藥師Kelly】大佬給出的思路和解答方法。
這個(gè)問題肯定小編相信肯定還有其他的方法的,也歡迎大家在評(píng)論區(qū)諫言。

小伙伴們,快快用實(shí)踐一下吧!如果在學(xué)習(xí)過(guò)程中,有遇到任何問題,歡迎加我好友,我拉你進(jìn)Python學(xué)習(xí)交流群共同探討學(xué)習(xí)。
------------------- End -------------------
往期精彩文章推薦:

歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持
想加入Python學(xué)習(xí)群請(qǐng)?jiān)诤笈_(tái)回復(fù)【入群】
萬(wàn)水千山總是情,點(diǎn)個(gè)【在看】行不行
/今日留言主題/
隨便說(shuō)一兩句吧~~
