gpt4 book ai didi

python - Pandas groupby 将未分组的列连接成逗号分隔的字符串

转载 作者:行者123 更新时间:2023-12-04 15:59:23 24 4
gpt4 key购买 nike

我有以下示例 df:

        col1     col2    col3   doc_no
0 a x f 0
1 a x f 1
2 b x g 2
3 b y g 3
4 c x t 3
5 c y t 4
6 a x f 5
7 d x t 5
8 d x t 6

我想按前 3 列( col1col2col3 )分组,根据前 3 列的分组将第四列( doc_no )连接成一行字符串还生成 3 列分组的排序计数列 ( count )。下面的示例所需输出(列顺序无关紧要):
        col1     col2    col3   count      doc_no
0 a x f 3 0, 1, 5
1 d x t 2 5, 6
2 b x g 1 2
3 b y g 1 3
4 c x t 1 3
5 c y t 1 4

我该怎么做呢?我使用下面的行来获取分组和计数:
grouped_df = df.groupby(['col1','col2','col3']).size().reset_index(name='count')\
.sort_values(['count'], ascending=False).reset_index()

但我不确定如何获得连接的 doc_no同一代码行中的列。

最佳答案

试试 groupbyagg像这样:

(df.groupby(['col1', 'col2', 'col3'])['doc_no']
.agg(['count', ('doc_no', lambda x: ','.join(map(str, x)))])
.sort_values('count', ascending=False)
.reset_index())

col1 col2 col3 count doc_no
0 a x f 3 0,1,5
1 d x t 2 5,6
2 b x g 1 2
3 b y g 1 3
4 c x t 1 3
5 c y t 1 4
agg使用起来很简单,因为您可以指定要在单个列上运行的 reducer 列表。

关于python - Pandas groupby 将未分组的列连接成逗号分隔的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62095847/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com