我正在使用一个数据框,其中有一列、值和其中的项目列表。
下面是我的数据框:
| uniqId | DeptId | Date | values |
| -------- | ------- | ---------- | ---------- |
| 1234 | BKNG | 2023-09-05 | [VGM, FJK] |
| 2534 | FINA | 2023-09-04 | [GTD, WEH] |
| 3469 | ASKG | 2023-09-05 | [MUG, PIS] |
我想实现的输出为:
| values_1 | uniqId | DeptId | Date | values |
| -------- | -------- | ------- | ---------- | ---------- |
| VGM | 1234 | BKNG | 2023-09-05 | [VGM, FJK] |
| FJK | 1234 | BKNG | 2023-09-05 | [VGM, FJK] |
| GTD | 2534 | FINA | 2023-09-04 | [GTD, WEH] |
| WEH | 2534 | FINA | 2023-09-04 | [GTD, WEH] |
| MUG | 3469 | ASKG | 2023-09-05 | [MUG, PIS] |
| PIS | 3469 | ASKG | 2023-09-05 | [MUG, PIS] |
原始值列保留在数据框中,并创建名为 Values_1 的新列,Values 中列表中的每个项目都作为其自己的列列出,其余数据列保持原样。
有人可以帮我解决这个问题吗?
提前致谢。
我知道可以使用 pandas Melt 或 pandas long 函数,但我不确定如何应用于包含列表的列。 https://www.geeksforgeeks.org/python-pandas-melt/
谢谢!
最佳答案
另一个可能的选择:
out = df.loc[(ser:=df["values"].explode()).index].assign(values_1=ser)
输出:
print(out)
uniqId DeptId Date values values_1
0 1234 BKNG 2023-09-05 [VGM, FJK] VGM
0 1234 BKNG 2023-09-05 [VGM, FJK] FJK
1 2534 FINA 2023-09-04 [GTD, WEH] GTD
1 2534 FINA 2023-09-04 [GTD, WEH] WEH
2 3469 ASKG 2023-09-05 [MUG, PIS] MUG
2 3469 ASKG 2023-09-05 [MUG, PIS] PIS
关于python - 如何在pandas python中使用一列(有一个项目列表)制作长格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77061417/