Pandas数据帧分组值

时间:2017-09-06 13:57:42

标签: python pandas dataframe pandas-groupby

我有像这样的pandas数据框,

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

enter image description here

我需要将seconds列合并为具有相同名称的行的单个列表。

我能够使用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,
})

输出:

enter image description here

但这需要花费大量时间在一个大数据帧上。没有for循环的任何简单方法来实现这个目标吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

groupbyapply list

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

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

答案 1 :(得分:1)

使用groupbyaggtolist

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

输出:

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