Pandas 数据框分组值

Pandas dataframe grouping values

我有一个这样的 pandas 数据框,

dd = pd.DataFrame(
{'name': ['abc','bcd','abc'],
 'seconds': [75,77,90],
})

我需要将秒列合并为同名行的单个列表。

我可以使用 for 循环来做到这一点,

names= list(set(dd['name']))
counter=[]
for a in names:
    counter.append(list(dd[dd['name'] == a]['seconds']))
end
seconds_list = pd.DataFrame(
{'name': names,
'seconds': counter,
})

输出:

但这在大数据帧上需要花费大量时间。有没有不用 for 循环实现这个的简单方法?

谢谢!

使用groupby with apply list:

df = dd.groupby('name')['seconds'].apply(list).reset_index()
print (df)

  name   seconds
0  abc  [75, 90]
1  bcd      [77]

使用groupbyaggtolist

 dd.groupby('name')['seconds'].agg(lambda x: x.tolist()).reset_index(name='seconds')

输出:

  name   seconds
0  abc  [75, 90]
1  bcd      [77]