盘点一个Pandas多列分组问题
回复“资源”即可获赠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学习群请在后台回复【入群】
万水千山总是情,点个【在看】行不行
评论