国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

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

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

瀏覽:5日期: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三级三级天天 | 91香蕉国产线在线观看免费 | 91精品国产高清91久久久久久 | 一级视频免费观看 | 亚洲黄色片网站 | 亚洲综合日韩精品欧美综合区 | 欧洲色老头| 毛片免费高清免费 | 伊人色在线视频 | 黄色美女网站在线观看 | 午夜性刺激免费视频 | 亚洲久草视频 | 国产乱子伦露脸对白在线小说 | 亚洲日韩精品欧美一区二区 | 精品国产品欧美日产在线 | a级高清毛片 | 国产精品免费一区二区三区 | 91欧美在线 | 在线日韩欧美一区二区三区 | 国产日韩在线看 | 亚洲欧美日韩国产专区一区 | 日本xxxxx久色视频在线观看 | 精品热线九九精品视频 | 另类zoofilia杂交videos | 手机看片1024久久精品你懂的 | 日韩欧美中文字幕在线视频 | 国产老头与老太hd | 久久老司机波多野结衣 | 日日摸夜夜搂人人要 | 欧美性巨大欧美 |