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

您的位置:首頁技術(shù)文章
文章詳情頁

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

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

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

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

補(bǔ)充知識: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 列轉(zhuǎn)行操作詳解(類似hive中explode方法)

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

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

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 2017天天爽夜夜爽精品视频 | 爱久久精品国产 | 欧美亚洲另类视频 | 男人的天堂精品国产一区 | 国产乱码精品一区二区三区卡 | 国产一级视频久久 | 一级黄色片aaa | 欧美成人免费一级人片 | 久久96国产精品久久久 | 米奇精品一区二区三区在线观看 | 国产精品国产欧美综合一区 | 久久精品免费i 国产 | 欧美做a欧美 | 成人网18免费网站在线 | 免费看美女毛片 | 国产成人精品免费视频大全五级 | 国产丶欧美丶日韩丶不卡影视 | 国产欧美亚洲精品a | 欧美一级欧美三级在线观看 | 国产精品久久久久影院色老大 | 在线观看免费精品国产 | 97在线视频免费观看 | 亚洲综合视频 | 免费国产成人高清在线观看不卡 | 奇米四色综合久久天天爱 | 泰国情欲片寂寞的寡妇在线观看 | 68久久久久欧美精品观看 | 久久国产精品99久久小说 | 女人张开腿让男人桶视频 | 国产高清在线精品二区一 | 国产福利三区 | 日韩一区三区 | 免费永久国产在线视频 | www日本com | 欧美日韩精品一区二区三区不卡 | 在线观看欧洲成人免费视频 | 国产女乱淫真高清免费视频 | 夜间福利在线观看 | 99久久精品男女性高爱 | 久久免费视频6 | 免费看一级毛片欧美 |