Python Pandas list列表數(shù)據(jù)列拆分成多行的方法實(shí)現(xiàn)
1、實(shí)現(xiàn)的效果
示例代碼:
df=pd.DataFrame({'A':[1,2],'B':[[1,2],[1,2]]}) df Out[458]: A B 0 1 [1, 2] 1 2 [1, 2]
拆分成多行的效果:
A B
0 1 1
1 1 2
3 2 1
4 2 2
2、拆分成多行的方法
1)通過apply和pd.Series實(shí)現(xiàn)
容易理解,但在性能方面不推薦。
df.set_index('A').B.apply(pd.Series).stack().reset_index(level=0).rename(columns={0:'B'}) Out[463]: A B 0 1 1 1 1 2 0 2 1 1 2 2
2)使用repeat和DataFrame構(gòu)造函數(shù)
性能可以,但不太適合多列
df=pd.DataFrame({'A':df.A.repeat(df.B.str.len()),'B':np.concatenate(df.B.values)}) df Out[465]: A B 0 1 1 0 1 2 1 2 1 1 2 2
或者
s=pd.DataFrame({'B':np.concatenate(df.B.values)},index=df.index.repeat(df.B.str.len())) s.join(df.drop('B',1),how='left') Out[477]: B A 0 1 1 0 2 1 1 1 2 1 2 2
3)創(chuàng)建新的列表
pd.DataFrame([[x] + [z] for x, y in df.values for z in y],columns=df.columns) Out[488]: A B 0 1 1 1 1 2 2 2 1 3 2 2
或者
#拆成多于兩列的情況 s=pd.DataFrame([[x] + [z] for x, y in zip(df.index,df.B) for z in y]) s.merge(df,left_on=0,right_index=True) Out[491]: 0 1 A B 0 0 1 1 [1, 2] 1 0 2 1 [1, 2] 2 1 1 2 [1, 2] 3 1 2 2 [1, 2]
4)使用reindex和loc實(shí)現(xiàn)
df.reindex(df.index.repeat(df.B.str.len())).assign(B=np.concatenate(df.B.values)) Out[554]: A B 0 1 1 0 1 2 1 2 1 1 2 2 #df.loc[df.index.repeat(df.B.str.len())].assign(B=np.concatenate(df.B.values)
5)使用numpy高性能實(shí)現(xiàn)
newvalues=np.dstack((np.repeat(df.A.values,list(map(len,df.B.values))),np.concatenate(df.B.values))) pd.DataFrame(data=newvalues[0],columns=df.columns) A B 0 1 1 1 1 2 2 2 1 3 2 2
到此這篇關(guān)于Python Pandas list列表數(shù)據(jù)列拆分成多行的方法實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Pandas list列拆分成多行內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python如何在ubuntu中更改Python和pip指向
這篇文章主要介紹了Python如何在ubuntu中更改Python和pip指向問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08Python實(shí)現(xiàn)批量修改指定目錄下圖片的大小
批量修改指定目錄下圖片大小通常是在需要對(duì)大量圖片進(jìn)行統(tǒng)一處理的情況下使用的,本文主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)批量修改圖片大小,需要的可以參考下2023-10-10詳解Python中內(nèi)置的NotImplemented類型的用法
這篇文章主要介紹了詳解Python中內(nèi)置的NotImplemented類型的用法,包括對(duì)相關(guān)的__eq__()和__ne__()兩個(gè)方法使用的講解,需要的朋友可以參考下2015-03-03pycharm配置pyqt5-tools開發(fā)環(huán)境的方法步驟
這篇文章主要介紹了pycharm配置pyqt5-tools開發(fā)環(huán)境的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-02-02python編程使用PyQt創(chuàng)建UE藍(lán)圖
這篇文章主要為大家介紹了python編程中如何使用PyQt創(chuàng)建UE藍(lán)圖的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-10-10python實(shí)現(xiàn)的發(fā)郵件功能示例
這篇文章主要介紹了python實(shí)現(xiàn)的發(fā)郵件功能,結(jié)合實(shí)例形式分析了Python使用網(wǎng)易郵箱發(fā)送郵件的相關(guān)操作技巧,需要的朋友可以參考下2019-09-09Python HTML解析模塊HTMLParser用法分析【爬蟲工具】
這篇文章主要介紹了Python HTML解析模塊HTMLParser用法,結(jié)合實(shí)例形式分析了HTMLParser模塊功能、常用函數(shù)及作為爬蟲工具相關(guān)使用技巧,需要的朋友可以參考下2019-04-04