python - Pandas 数据框分组值

标签 python pandas dataframe pandas-groupby

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

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

enter image description here

我需要将秒列合并到具有相同名称的行的单个列表中。

我可以使用 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 循环的情况下实现此目的?

谢谢!

最佳答案

使用groupbyapply 列表:

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

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

关于python - Pandas 数据框分组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46077180/

相关文章:

Python/Pandas - 将 pandas DataFrame 划分为 10 个不相交、大小相等的子集

python - Tensorflow Estimator API 在评估模式下保存图像摘要

python - Python Bottle 路由中的类作用域

python - Pandas 有条件创建新的数据框列

python - 在 pandas 数据框中,如何检查两个字符串是否存在于同一行但不同列中?

python - 从列表名称作为列名称的多个列表创建数据框

python - Django 授权。使用多个文件时的模型

python - 在循环内逐列修改numpy数组

pandas - 如何在现有数据框中创建新类别?

python - 在具有多个具有不同值的日期时间列的 DataFrame 中设置日期时间索引