我有一个包含“pid”、“code”、“type”和“note”列的数据框。每个 pid(患者 ID)都与诊断和药物相关联。它们都有代码和注释(参见示例)。每个代码可以有多个注释。如何用相应的第一次看到的注释和类型替换所有代码?执行 for 循环不是一种选择。
请注意,例如,代码 A 在 IN 中同时具有 alvedon 和 ipren,但在 OUT 中仅具有 alvedon。这样做,我可以通过名称而不是代码来识别它们。
输入:
pid code type note
1 A M alvedon
1 B D pain
1 C M ulcer
2 A M ipren
2 B D hurt
3 A M alvedon
3 B D hurt
3 C M stomach
4 A M ipren
4 B D pain
5 A M ipren
5 B D pain
输出:
pid code
1 A_M_alvedon
1 B_D_pain
1 C_M_ulcer
2 A_M_alvedon
2 B_D_pain
3 A_M_alvedon
3 B_D_pain
3 C_M_ulcer
4 A_M_alvedon
4 B_D_pain
5 A_M_alvedon
5 B_D_pain
我已经走到这一步了:
df.groupby('code').note.agg(['first'])
但这只给了我分组:
输出:
code type note
A alvedon
B pain
C ulcer
最佳答案
您可以像您正在做的那样对代码进行连接,然后进行分组,然后进行转换:
In [9]: df["out"] = (
(df["code"] + "_" + df["type"] + "_" + df["note"]).groupby(df["code"]).transform("first"))
In [10]: df
Out[10]:
pid code type note out
0 1 A M alvedon A_M_alvedon
1 1 B D pain B_D_pain
2 1 C M ulcer C_M_ulcer
3 2 A M ipren A_M_alvedon
4 2 B D hurt B_D_pain
5 3 A M alvedon A_M_alvedon
6 3 B D hurt B_D_pain
7 3 C M stomach C_M_ulcer
8 4 A M ipren A_M_alvedon
9 4 B D pain B_D_pain
10 5 A M ipren A_M_alvedon
11 5 B D pain B_D_pain
关于python - 将单元格值映射或替换为 pandas 中相应的字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49283249/