关于Pandas数据分组展示

发布于 2022-09-04 00:21:06 字数 767 浏览 11 评论 0

用Pandas建立一个DataFrame的数据:

流水号处理人处理时间
10000张三2016-10-01
10000李四2016-10-02
10001王五2016-10-01
10002赵六2016-10-03
10001黄七2016-10-02
10000吴八2016-10-03

要如何处理才能按流水号分组,然后将处理人合并展示(用、或者其他字符连接),类似下表:

流水号处理人
10000张三、李四、吴八
10001王五、黄七
10002赵六

或者不用Pandas,其他的方法也可以

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

看春风乍起 2022-09-11 00:21:06

感觉是个挺典型的groupby函数例子:

cols = ['流水号', '处理人', '处理时间']
data = [[10000, '张三', '2016-10-01'],
        [10000, '李四', '2016-10-02'],
        [10001, '王五', '2016-10-01'],
        [10002, '赵六', '2016-10-03'],
        [10001, '黄七', '2016-10-02'],
        [10000, '吴八', '2016-10-03']]
frame = pd.DataFrame(data,columns=cols)

def combination(names):
    return ','.join(names)
    
frame.groupby('流水号').aggregate(combination)

输出结果应该是这样:

In [12]: frame.groupby('流水号').aggregate(combinition)
Out[12]: 
            处理人                              处理时间
流水号                                              
10000  张三,李四,吴八  2016-10-01,2016-10-02,2016-10-03
10001     王五,黄七             2016-10-01,2016-10-02
10002        赵六  
允世 2022-09-11 00:21:06

python3

import pandas as pd

cols = ['流水号', '处理人', '处理时间']
data = [[10000, '张三', '2016-10-01'],
        [10000, '李四', '2016-10-02'],
        [10001, '王五', '2016-10-01'],
        [10002, '赵六', '2016-10-03'],
        [10001, '黄七', '2016-10-02'],
        [10000, '吴八', '2016-10-03']]

df = pd.DataFrame(data,columns=cols)
grp = [(n, ','.join([r for r in set(df[df['流水号']==n]['处理人'])]))
                       for n in set(df['流水号'])]

df2 = pd.DataFrame(grp, columns=cols[:-1])
print(df)
print(df2)
谜兔 2022-09-11 00:21:06
cols = ['流水号', '处理人', '处理时间']
data = [[10000, '张三', '2016-10-01'],
        [10000, '李四', '2016-10-02'],
        [10001, '王五', '2016-10-01'],
        [10002, '赵六', '2016-10-03'],
        [10001, '黄七', '2016-10-02'],
        [10000, '吴八', '2016-10-03']]
frame = pd.DataFrame(data,columns=cols)
df_result=pd.DataFrame(frame.groupby("流水号")["处理人"].apply(lambda x:",".join(x)))
df_result
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文