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

微信群:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/katyusha1/article/details/100935117