分享

盘点一个Pandas多列分组问题

 Python进阶者 2023-02-10 发布于广东

回复“资源”即可获赠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】等人参与学习交流。

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

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多