Python中Dataframe元素為不定長(zhǎng)list時(shí)的拆分分組
引言
本文想要解決的問(wèn)題是當(dāng)DataFrame中某一列元素為不定長(zhǎng)度的數(shù)組時(shí),該如何對(duì)它們進(jìn)行拆分分解為后續(xù)元素,從而進(jìn)行進(jìn)一步的提取操作,數(shù)據(jù)格式見(jiàn)下圖:

解決方法
這個(gè)問(wèn)題的解決思路首先是要不定長(zhǎng)的數(shù)組填充成等長(zhǎng)的數(shù)組,從而后續(xù)可以直接轉(zhuǎn)換為元素為單一值的標(biāo)準(zhǔn)DataFrame,再和原DataFrame合并即可完成操作。填充的部分使用了map()方法來(lái)實(shí)現(xiàn),實(shí)現(xiàn)前還需要獲得數(shù)組的最大長(zhǎng)度以確定填充數(shù)目。代碼見(jiàn)下:
a=[[['a','d'],['b'],['a','c']],[1,2,3],[4,5,6]] df=pd.DataFrame(a).T used_col=df[0] length=used_col.map(lambda x:len(x)) max_l=length.max() temp=used_col.map(lambda x:x+[np.nan]*(max_l-len(x))) temp=np.array(temp.to_list()) temp=pd.DataFrame(temp) df=df.drop(0,axis=1) temp.columns=['cat1','cat2'] output=df.join(temp)
結(jié)果展示:
pd.DataFrame(a).T
Out[13]:
0 1 2
0 [a, d] 1 4
1 [b] 2 5
2 [a, c] 3 6
output
Out[14]:
1 2 cat1 cat2
0 1 4 a d
1 2 5 b nan
2 3 6 a c
總結(jié)
筆者解決這個(gè)問(wèn)題的關(guān)鍵思路就是將元素為不定長(zhǎng)list的一列取出來(lái)作為新的DataFrame,但沒(méi)有找到好的辦法實(shí)現(xiàn)長(zhǎng)度不夠自動(dòng)補(bǔ)齊,無(wú)奈使用map()函數(shù)手動(dòng)補(bǔ)齊。這個(gè)問(wèn)題其實(shí)不是筆者遇到的,只是在問(wèn)答區(qū)回答別人提問(wèn)時(shí)花了點(diǎn)時(shí)間解決了一下,再加上最后沒(méi)有被題主所采納感覺(jué)很可惜,就發(fā)出來(lái)和大家分析一下自己的解法,可能會(huì)略顯粗糙。
到此這篇關(guān)于Python中Dataframe元素為不定長(zhǎng)list時(shí)的拆分分組的文章就介紹到這了,更多相關(guān)Dataframe元素為不定長(zhǎng)list拆分內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python爬蟲(chóng)必備之XPath解析庫(kù)
今天給大家?guī)?lái)的是Python爬蟲(chóng)的相關(guān)知識(shí),文章圍繞著XPath解析庫(kù)展開(kāi),文中有非常詳細(xì)的代碼示例及介紹,需要的朋友可以參考下2021-06-06
python正則表達(dá)式匹配不包含某幾個(gè)字符的字符串方法
今天小編就為大家分享一篇python正則表達(dá)式匹配不包含某幾個(gè)字符的字符串方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07
python中日志logging模塊的性能及多進(jìn)程詳解
使用Python來(lái)寫(xiě)后臺(tái)任務(wù)時(shí),時(shí)常需要使用輸出日志來(lái)記錄程序運(yùn)行的狀態(tài),并在發(fā)生錯(cuò)誤時(shí)將錯(cuò)誤的詳細(xì)信息保存下來(lái),以別調(diào)試和分析。Python的logging模塊就是這種情況下的好幫手。本文就介紹了python中日志logging模塊性能及多進(jìn)程的相關(guān)資料,需要的朋友可以參考下。2017-07-07
使用tensorflow根據(jù)輸入更改tensor shape
這篇文章主要介紹了使用tensorflow根據(jù)輸入更改tensor shape,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06
python3使用urllib示例取googletranslate(谷歌翻譯)
這篇文章主要介紹了使用urllib取googletranslate(谷歌翻譯)的示例,通過(guò)這個(gè)谷歌翻譯示例學(xué)習(xí)python3中urllib的使用方法,2014-01-01
使用Flask和Django中解決跨域請(qǐng)求問(wèn)題
這篇文章主要介紹了使用Flask和Django中解決跨域請(qǐng)求問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04
python調(diào)用接口的4種方式代碼實(shí)例
這篇文章主要介紹了python調(diào)用接口的4種方式代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
pytorch中關(guān)于backward的幾個(gè)要點(diǎn)說(shuō)明
這篇文章主要介紹了pytorch中關(guān)于backward的幾個(gè)要點(diǎn)說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
Python使用FastAPI制作一個(gè)視頻流媒體平臺(tái)
在構(gòu)建視頻流媒體平臺(tái)時(shí),用戶(hù)認(rèn)證與視頻上傳是兩個(gè)至關(guān)重要的功能,FastAPI作為一個(gè)高效的Web框架,可以輕松處理這些需求,下面我們看看具體實(shí)現(xiàn)方法吧2025-04-04
python腳本使用阿里云slb對(duì)惡意攻擊進(jìn)行封堵的實(shí)現(xiàn)
這篇文章主要介紹了python腳本使用阿里云slb對(duì)惡意攻擊進(jìn)行封堵的實(shí)現(xiàn),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02

