我有一个数据框,如下所示,显示每行中不同实体的关系。
孩子 | 家长 | Ult_Parent | 全家 |
---|---|---|---|
A032 | A001 | A039 | A001、A032、A039、A040、A041、A043、A043、A045、A046 |
在“Full_Family”列中,它显示整个家谱从小到大的正确层次结构,而不仅仅是该特定行中的实体。但要注意的是,并非“Full_Family”中的每个实体都会出现在“Child/Parent/Ult_Parent”中,因为“Full_Family”数据来自其他源。
这里我有2个问题需要解决:
以下是示例和理想结果:
孩子 | 家长 | Ult_Parent | 全家 | 正确_顺序 | 正确_Ult_Parent_per_Family |
---|---|---|---|---|---|
A032 | A001 | A039 | A001、A032、A039、A040、A041、A043、A043、A045、A046 | A001、A032、A039 | A043 |
A001 | A043 | A039 | A001、A032、A039、A040、A041、A043、A043、A045、A046 | A001、A039、A043 | A043 |
虽然 A046 是该族中的最终父级,但它没有出现在该数据帧的 Child/Parent/Ult_Parent 中,因此在这种情况下,每个族的正确最终父级是 A043。
感谢您的帮助。
IIUC,你可以使用这个方法:
df["Correct_Order"] = df.apply(
lambda row: ", ".join(sorted([row["Parent"], row["Child"], row["Ult_Parent"]])),
axis=1,
)
df["Correct_Ult_Parent_per_Family"] = df["Parent"].max()
Child Parent Ult_Parent Full_Family Correct_Order Correct_Ult_Parent_per_Family
0 A032 A001 A039 A001, A032, A039, A040, A041, A043, A043, A045... A001, A032, A039 A043
1 A001 A043 A039 A001, A032, A039, A040, A041, A043, A043, A045... A001, A039, A043 A043