我有一个包含三列的表格,其中包含许多相同的值,但第二列中的行不同。我想创建一个字典(或一个表),其中合并具有相同值的所有行,并将第二列中的值作为第二列中的列表。所以基本上我想改变这个:
1 | 2 | 3 |
---|---|---|
价值1 | 价值A | 价值I |
价值1 | 价值B | 价值I |
进入这个:
1 | 2 | 3 |
---|---|---|
价值1 | 值A;价值B | 价值I |
我用谷歌搜索了 pandas-functions,但找不到任何有帮助的东西。我尝试了很多 for 循环,但我无法让它工作两次,而且我想知道是否没有一种简单的方法可以做到这一点?
有一种方法
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]