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

解決方法
這個問題的解決思路首先是要不定長的數(shù)組填充成等長的數(shù)組,從而后續(xù)可以直接轉(zhuǎ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é)
筆者解決這個問題的關鍵思路就是將元素為不定長list的一列取出來作為新的DataFrame,但沒有找到好的辦法實現(xiàn)長度不夠自動補齊,無奈使用map()函數(shù)手動補齊。這個問題其實不是筆者遇到的,只是在問答區(qū)回答別人提問時花了點時間解決了一下,再加上最后沒有被題主所采納感覺很可惜,就發(fā)出來和大家分析一下自己的解法,可能會略顯粗糙。
到此這篇關于Python中Dataframe元素為不定長list時的拆分分組的文章就介紹到這了,更多相關Dataframe元素為不定長list拆分內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
使用tensorflow根據(jù)輸入更改tensor shape
這篇文章主要介紹了使用tensorflow根據(jù)輸入更改tensor shape,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06
python3使用urllib示例取googletranslate(谷歌翻譯)
這篇文章主要介紹了使用urllib取googletranslate(谷歌翻譯)的示例,通過這個谷歌翻譯示例學習python3中urllib的使用方法,2014-01-01
python腳本使用阿里云slb對惡意攻擊進行封堵的實現(xiàn)
這篇文章主要介紹了python腳本使用阿里云slb對惡意攻擊進行封堵的實現(xiàn),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-02-02

