av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

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

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

瀏覽:2日期: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 編程
相關文章:
主站蜘蛛池模板: 欧美中文在线 | 99精品在线 | 91麻豆精品国产91久久久资源速度 | 欧美黄在线观看 | 在线a视频 | 国产成人在线播放 | 成人在线观看免费爱爱 | 久久久久免费精品国产 | 亚洲精品无人区 | 亚洲一二三区免费 | 亚洲精品电影在线观看 | 狠狠爱网址| 亚洲视频中文字幕 | 国产成人免费在线观看 | 日本亚洲精品 | 国产精品久久久久久久久久久免费看 | 视频一区二区中文字幕 | 国产美女在线免费观看 | 亚洲视频在线看 | 人人澡人人射 | 天天爽夜夜操 | 久久久久se | 美女三区 | 国精产品一区一区三区免费完 | 欧美日本在线观看 | 亚洲精品久久久一区二区三区 | 天天色天天射天天干 | 99在线国产 | 日本aⅴ中文字幕 | 亚洲免费av一区 | 欧美网站一区二区 | 2018天天干天天操 | 久在线视频播放免费视频 | 521av网站| 国产精品美女久久久久久久网站 | 国产美女一区二区 | 成人av在线网站 | 日日骚网| 亚洲精品99 | 北条麻妃av一区二区三区 | 中文字幕av在线播放 |