首页 > 解决方案 > 一行PANDAS的多个结果

问题描述

我有一个包含姓名和部门的数据框。所有这些名称可以映射到 4 个不同的部门(部门 A、B、C 和 D)。例如,每个名称都必须映射到部门 A、B、C、D。在初始数据中,每个名称仅映射到一个部门。在最终数据集中,每个名称映射到四个不同的部门。我需要一种方法为每个名称插入 3 个额外的行,并为它们添加 3 个其他部门。

例子:

初始数据:

Name Department
Joe  A
Ellen A
Zach  A

最终数据:

Name Department
Joe  A
Joe  B
Joe  C
Joe  D
Ellen A
Ellen B
Ellen C
Ellen D
Zach  A
Zach  B
Zach  C
Zach  D

我知道这可以在某种 for 循环中完成,但我是 Pandas 的新手,任何帮助将不胜感激。

标签: pythonpandasdataframedictionary

解决方案


您可以尝试将所有部门作为列表分配给每个名称,然后.explode

df = df.assign(Department=[["A", "B", "C", "D"]] * len(df)).explode(
    "Department"
)
print(df)

印刷:

    Name Department
0    Joe          A
0    Joe          B
0    Joe          C
0    Joe          D
1  Ellen          A
1  Ellen          B
1  Ellen          C
1  Ellen          D
2   Zach          A
2   Zach          B
2   Zach          C
2   Zach          D

推荐阅读