如何将除一列之外具有相同值的行合并到数据框/表中的一行中? [重复]

问题描述 投票:0回答:1

我有一个包含三列的表格,其中包含许多相同的值,但第二列中的行不同。我想创建一个字典(或一个表),其中合并具有相同值的所有行,并将第二列中的值作为第二列中的列表。所以基本上我想改变这个:

1 2 3
价值1 价值A 价值I
价值1 价值B 价值I

进入这个:

1 2 3
价值1 值A;价值B 价值I

我用谷歌搜索了 pandas-functions,但找不到任何有帮助的东西。我尝试了很多 for 循环,但我无法让它工作两次,而且我想知道是否没有一种简单的方法可以做到这一点?

python pandas dataframe numpy datatable
1个回答
1
投票

有一种方法

groupby
可以按提供的列中的值集对数据进行分组。还有方法
agg
,它将聚合函数应用于每个组。在你的情况下 - 将数据收集到列表中。

这是一个创建模拟数据并完成工作的简单片段:

import pandas as pd

df = pd.DataFrame({
    "1": ["Value11", "Value11", "Value12", "Value12"],
    "2": ["Value21", "Value22", "Value23", "Value24"],
    "3": ["Value31", "Value31", "Value32", "Value32"],
})

df \
    .groupby(["1", "3"], as_index=False) \
    .agg(list)

输出:

         1        3                   2
0  Value11  Value31  [Value21, Value22]
1  Value12  Value32  [Value23, Value24]
© www.soinside.com 2019 - 2024. All rights reserved.