pandas多行合併成一列

前言

作爲 一個無法拒絕女生請求的屌絲,在發誓再也不幫女生處理問題十天後,在下破戒了。事情要從一個excel文件和一個漂亮小姐姐同事那裏說起。

話說有個漂亮的姐姐正在因爲一個數據處理問題而發愁,見她柳眉輕蹙,淚眼汪汪的樣子,在瞭解妹子還是單身的情況下,在下主動申請幫助妹子解決問題,過去想妹子詢問情況。
原來妹子的需求是這樣的!
在這裏插入圖片描述
這裏有一個人走的路徑,妹子接到上級的指示,需要將這些人走過的路徑,按照順序拼接起來
x1 按照順序 1:a 2:c 3:b 所以就是a->c->b
妹子最後的結果就是要這樣
在這裏插入圖片描述
數據量少的話,妹子可以手動處理,但是妹子面臨的是12568條數據,在家處理過程複雜,就算加班也不能夠搞定,看見妹子眼中噙着的點點清淚,在下心軟了,淪陷了,屌絲病犯了,一把推開妹子,開始擼代碼了。

由於數據涉及隱私,所以這裏選擇自己構建類似的數據,這裏主要講方法,所以數據無關緊要,話不多說,直接上代碼。

1、構建數據(和妹子需求類似的)

import pandas as pd

data = [
    ['x1',1,'a'],
    ['x1',2,'c'],
    ['x2',1,'b'],
    ['x1',3,'b'],
    ['x2',2,'c'],
    ['x2',3,'a']
]
columns = ['people','order','route']

df = pd.DataFrame(data=data,columns=columns)

結果
在這裏插入圖片描述

2、對行走序號進行排序

df=df.sort_values(by=['people','order'],ascending=True)

結果
在這裏插入圖片描述

3、拼接路線

res = df[['people','route']].groupby(['people'])\
	.apply(lambda x:"->".join(x['route'])).reset_index()

結果
在這裏插入圖片描述

不到十分鐘,妹子的需求被我完美搞定,恰逢剛到下班時間,妹子收拾好東西,說要請在下喫飯表示感謝,再三推遲,盛情難卻,在下終於迎來了人生中第三次和妹子單獨喫飯的時光。然天有不測風雲,此時老闆一個電話,說有個緊急需求,需要在下出一份數據,在下和妹子的晚餐時光隨即泡湯。

在這裏插入圖片描述

如果有老鐵喜歡在下寫博客的風格,歡迎大家加入老鐵建的技術交流羣,專門交流技術,包括但不限於 pyton sql excel vba sppark hive elasticserach,大家一起學習,一起成長。

QQ羣:174961823

微信羣:

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章