Python中Dataframe元素為不定長list時的拆分分組
引言
本文想要解決的問題是當(dāng)DataFrame中某一列元素為不定長度的數(shù)組時,該如何對它們進(jìn)行拆分分解為后續(xù)元素,從而進(jìn)行進(jìn)一步的提取操作,數(shù)據(jù)格式見下圖:
解決方法
這個問題的解決思路首先是要不定長的數(shù)組填充成等長的數(shù)組,從而后續(xù)可以直接轉(zhuǎn)換為元素為單一值的標(biāo)準(zhǔn)DataFrame,再和原DataFrame合并即可完成操作。填充的部分使用了map()
方法來實現(xiàn),實現(xiàn)前還需要獲得數(shù)組的最大長度以確定填充數(shù)目。代碼見下:
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é)
筆者解決這個問題的關(guān)鍵思路就是將元素為不定長list的一列取出來作為新的DataFrame,但沒有找到好的辦法實現(xiàn)長度不夠自動補(bǔ)齊,無奈使用map()
函數(shù)手動補(bǔ)齊。這個問題其實不是筆者遇到的,只是在問答區(qū)回答別人提問時花了點時間解決了一下,再加上最后沒有被題主所采納感覺很可惜,就發(fā)出來和大家分析一下自己的解法,可能會略顯粗糙。
到此這篇關(guān)于Python中Dataframe元素為不定長list時的拆分分組的文章就介紹到這了,更多相關(guān)Dataframe元素為不定長list拆分內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pytest通過assert進(jìn)行斷言的實現(xiàn)
assert斷言是一種用于檢查代碼是否按預(yù)期工作的方法,在pytest中,assert斷言可以用于測試代碼的正確性,以確保代碼在運行時按照預(yù)期工作,本文就來介紹一下如何使用,感興趣的可以了解下2023-12-12Python實現(xiàn)哲學(xué)家就餐問題實例代碼
這篇文章主要給大家介紹了關(guān)于Python實現(xiàn)哲學(xué)家就餐問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11實現(xiàn)Python3數(shù)組旋轉(zhuǎn)的3種算法實例
在本篇文章里小編給大家整理的是一篇關(guān)于實現(xiàn)Python3數(shù)組旋轉(zhuǎn)的3種算法實例內(nèi)容,需要的朋友們可以學(xué)習(xí)參考下。2020-09-09Python plt.boxplot函數(shù)及其參數(shù)使用小結(jié)
plt.boxplot函數(shù)用于繪制箱線圖,本文介紹了Python plt.boxplot函數(shù)及其參數(shù)使用小結(jié),文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-02-02