Pandas:根据另一列中的值对两列进行分组

标签 pandas dataframe pandas-groupby

我对 python/pandas 还很陌生,我有一个看起来像这样的数据框:

 id         name        color
id_1        alex        blue
id_2        james       yellow
id_1        sara        black
id_4        dave        pink
id_4        lin         grey
id_2        aly         red

我想按 id 分组并以列表形式获取其他两列中的值:

  id           name              color
id_1        [alex,sara]       [blue,black]
id_2        [james,aly]       [yellow,red]
id_4        [dave,lin]        [pink,grey]

有没有简单的方法可以做到这一点?

最佳答案

使用groupbyagg通过带有 tolist 的自定义函数:

df = df.groupby('id').agg(lambda x: x.tolist())
print (df)
              name          color
id                               
id_1  [alex, sara]  [blue, black]
id_2  [james, aly]  [yellow, red]
id_4   [dave, lin]   [pink, grey]

关于Pandas:根据另一列中的值对两列进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45436938/

相关文章:

python - 从 csv 堆叠文件创建 pandas DataFrame

python - 将垂直矩阵转换为相关矩阵。 Python

r - 如果满足条件,则将值保留在行中

python-3.x - pandas 列出相同的索引

python - Groupby 当给定每个组的起始位置索引时

python - 未知的字符串格式,python 错误

python-3.x - 从 Pandas df 中选择列/轴进行关联

r - 将文本行分隔为数据框的列

python - 如何在Python中对两列进行透视和排序?

python - Pandas groupby : fill missing values from other group members