盘点一个Pandas多列分组问题

共 1583字,需浏览 4分钟

 ·

2022-06-29 17:21

点击上方“Python共享之家”,进行关注

回复“资源”即可获赠Python学习资料

文章憎命达,魑魅喜人过。

大家好,我是皮皮。

一、前言

前几天在Python白银交流群【在途中要勤奋的熏肉肉🤪】问了一道Pandas处理的问题,如下图所示。

原始数据如下图所示:

下面是她自己写的代码:

# df['name'] = df['name'].str.lower()
test['pid'] = test['pid'].astype(int)
test['arr0'] = test['arr0'].astype(str)
test['arr1'] = test['arr1'].astype(str)
test['arr2'] = test['arr2'].astype(str)
test['arr3'] = test['arr3'].astype(str)
aggregate_funcs = {
    'arr0': lambda s: '-'.join(set(s)),
    'arr1': lambda s: '-'.join(set(s)),
    'arr2': lambda s: '-'.join(set(s)),
    'arr3': lambda s: '-'.join(set(s)), 
}
testdf = test.groupby(test['pid']).aggregate(aggregate_funcs)
print(testdf)

目前的大概思路如下:

二、实现过程

这里【月神】给了一份示例代码,如下所示:

arr0_3 = ['arr0''arr1''arr2''arr3']
data[arr0_3] = data[arr0_3].astype(str)
data.groupby('pid')[arr0_3].agg(lambda x: x.drop_duplicates().str.cat(sep='-'))

运行之后,结果如下图所示:

没想到还可以批量地做转换,真是太强了!

顺利地解决了粉丝的问题。

三、总结

大家好,我是皮皮。这篇文章主要盘点了一道使用Pandas处理数据的问题,文中针对该问题给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。

最后感谢粉丝【在途中要勤奋的熏肉肉🤪】提问,感谢【月神】给出的思路和代码解析,感谢【dcpeng】、【猫药师Kelly】等人参与学习交流。

小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。

------------------- End -------------------

往期精彩文章推荐:

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持

想加入Python学习群请在后台回复【

万水千山总是情,点个【在看】行不行

浏览 42
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报