亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

Python pandas 列轉行操作詳解(類似hive中explode方法)

瀏覽:3日期:2022-07-25 10:02:46

最近在工作上用到Python的pandas庫來處理excel文件,遇到列轉行的問題。找了一番資料后成功了,記錄一下。

1. 如果需要爆炸的只有一列:

df=pd.DataFrame({’A’:[1,2],’B’:[[1,2],[1,2]]})dfOut[1]: A B0 1 [1, 2]1 2 [1, 2]

如果要爆炸B這一列,可以直接用explode方法(前提是你的pandas的版本要高于或等于0.25)

df.explode(’B’) A B 0 1 1 1 1 2 2 2 1 3 2 2

2. 如果需要爆炸的有2列及以上

df=pd.DataFrame({’A’:[1,2],’B’:[[1,2],[3,4]],’C’:[[1,2],[3,4]]})dfOut[592]: A B C0 1 [1, 2] [1, 2]1 2 [3, 4] [3, 4]

則可以用寫一個方法,如下代碼:

def unnesting(df, explode): idx = df.index.repeat(df[explode[0]].str.len()) df1 = pd.concat([ pd.DataFrame({x: np.concatenate(df[x].values)}) for x in explode], axis=1) df1.index = idx return df1.join(df.drop(explode, 1), how=’left’) unnesting(df,[’B’,’C’])Out[2]: B C A0 1 1 10 2 2 11 3 3 21 4 4 2

補充知識:pandas:一列分解成多列 series.str.split(’,’,expand=True);pyspark 一列分解成多列

源shuju

question_id id0 17576 70391,703941 17576 70391,70392,70393,703942 17576 70391,703923 40430 155032,155033,1550344 40430 155032,155033,155034,1550355 40430 155033,155034,1550356 40430 155032,1550357 40430 155034,1550358 40430 155032,1550349 40430 155032,155034,15503510 40430 155033,15503411 40430 155032,15503312 40430 155033,15503513 40430 155032,155033,155035

pandas solution

df.join(df[’id’].str.split(’,’,expand=True)

result

0 1 2 30 70391 70394 None None1 70391 70392 70393 703942 70391 70392 None None3 155032 155033 155034 None4 155032 155033 155034 1550355 155033 155034 155035 None6 155032 155035 None None7 155034 155035 None None8 155032 155034 None None9 155032 155034 155035 None10 155033 155034 None None11 155032 155033 None None12 155033 155035 None None13 155032 155033 155035 None

#注意expand=True

df.join(df[’id’].str.split(’,’,expand=True))

question_id id 0 1 2 30 17576 70391,70394 70391 70394 None None1 17576 70391,70392,70393,70394 70391 70392 70393 703942 17576 70391,70392 70391 70392 None None3 40430 155032,155033,155034 155032 155033 155034 None4 40430 155032,155033,155034,155035 155032 155033 155034 1550355 40430 155033,155034,155035 155033 155034 155035 None6 40430 155032,155035 155032 155035 None None7 40430 155034,155035 155034 155035 None None8 40430 155032,155034 155032 155034 None None9 40430 155032,155034,155035 155032 155034 155035 None10 40430 155033,155034 155033 155034 None None11 40430 155032,155033 155032 155033 None None12 40430 155033,155035 155033 155035 None None13 40430 155032,155033,155035 155032 155033 155035 None

pyspark solution tdf=df.select(F.split(df.id,’,’).alias(’ss’),’question_id’,’count_num’) tdf.sort(’question_id’).show() res=tdf.select(F.explode(tdf.ss).alias(’new’),’question_id’,’count_num’)res.sort(’question_id’).show()res.groupBy(’question_id’,’new’).sum().sort(’question_id’).show()

result

Python pandas 列轉行操作詳解(類似hive中explode方法)

Python pandas 列轉行操作詳解(類似hive中explode方法)

以上這篇Python pandas 列轉行操作詳解(類似hive中explode方法)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 一级女性全黄久久生活片 | 爽爽爽爽爽爽a成人免费视频 | 国产亚洲精品网站 | 亚洲国产香蕉视频欧美 | 国产精品亚洲片在线花蝴蝶 | 一级特黄特色的免费大片视频 | 美女喷水视频在线观看 | 国产极品精频在线观看 | 久久亚洲国产精品 | 国产h在线播放 | 国产91青青成人a在线 | 国产裸舞福利资源在线视频 | 精品哟哟哟国产在线不卡 | 成人嘿嘿视频网站在线 | 黄色网页免费大全 | 全国精品影院 | 综合天天色 | 欧美一级毛片aaa片 欧美一级毛片一 | 亚洲精品久 | 高清国产一级毛片国语 | 久久综合噜噜激激的五月天 | www.草逼.com| 黄色高清视频在线观看 | 成年免费大片黄在线观看看 | 成人涩涩屋福利视频 | 国产人做人爱视频精品 | 国产大片免费看 | 亚洲成人黄色在线观看 | 伊人干综合 | 亚洲综合一区二区三区 | 国产亚洲精品一区二区 | 亚洲精品国产手机 | 亚洲青青青网伊人精品 | 免费的三级毛片 | 国产亚洲3p一区二区三区 | 91入口免费网站大全 | 国产成人精品magnet | 精品久久久在线观看 | 一本一本大道香蕉久在线精品 | 欧美最刺激好看的一级毛片 | 草草在线播放 |