gpt4 book ai didi

python-3.x - GroupBy 但仍保留所有行

转载 作者:行者123 更新时间:2023-12-04 00:55:34 26 4
gpt4 key购买 nike

我有这个数据框

data = [[1,'A','a'],
[1,'A','b'],
[1,'B','a'],
[2,'A','a'],
[2,'A','b'],
[2,'A','c']]

df_1 = pd.DataFrame(data = data,columns = ['id','Main','sub_steps'])
输出
   id Main Sub_steps
0 1 A a
1 1 A b
2 1 B a
3 2 A a
4 2 A b
5 2 A c
我想 groupby (id, Main) 并仍然保留所有行
期望输出
   id Main Sub_steps      lst
0 1 A a [a,b]
1 1 A b [a,b]
2 1 B a [a]
3 2 A a [a,b,c]
4 2 A b [a,b,c]
5 2 A c [a,b,c]
如果我只是用 id 和 main 分组并压平另一行
df_1.groupby(['id','Main']).agg({'Sub_steps':list})
我会得到这个
         Sub_steps
id Main
1 A [a, b]
B [a]
2 A [a, b, c]

最佳答案

使用 merge在列名上重命名 groupby 返回的 pd.Series与 agg :

df_1.merge(df_1.groupby(['id','Main'])['sub_steps'].agg(list).rename('lst'),
on=['id', 'Main']))
输出:
   id Main sub_steps        lst
0 1 A a [a, b]
1 1 A b [a, b]
2 1 B a [a]
3 2 A a [a, b, c]
4 2 A b [a, b, c]
5 2 A c [a, b, c]
您可以将聚合的输出合并回原始数据帧。

关于python-3.x - GroupBy 但仍保留所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62761820/

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