首页 > 解决方案 > ID重复时的熊猫新列

问题描述

你好社区,

我正在寻找一个新列,其中包含每个 ID 的独特药物列表。

我有一些奇怪/复杂的数据,因为我的 ID 重复:

ID 药物
1 一个
1 b
1 C
2 H
3 一个
3 一个
3 C

一些 ID 对每种药物都有一行 (ID #1),一些 ID 有重复的药物 (ID #3) 以及非重复的药物。

我想创建一个新列,其中包含每个 ID 的所有独特药物的列表:

ID 药物 药物
1 一个 甲,乙,丙
1 b 甲,乙,丙
1 C 甲,乙,丙
2 H H
3 一个 一个,c
3 一个 一个,c
3 C 一个,c

有人知道如何创建这个吗?

标签: pythonpandas

解决方案


df["Medications"] = (df.groupby("ID")
                       .Medication
                       .unique()
                       .agg(", ".join)
                       .reindex(df.ID).values)

agg用&重新计算unique值,然后用join,reindex

要得到

   ID Medication Medications
0   1          a     a, b, c
1   1          b     a, b, c
2   1          c     a, b, c
3   2          h           h
4   3          a        a, c
5   3          a        a, c
6   3          c        a, c

推荐阅读