Python 使用另一列中的字符串比较和更新dataframe列列表

Python 使用另一列中的字符串比较和更新dataframe列列表,python,pandas,Python,Pandas,我有一个数据框: +--------+---------+------+----------------+ | Name | Address | ID | Linked_To | +--------+---------+------+----------------+ | Name A | ABC | 1233 | 1234;1235 | | Name B | DEF | 1234 | 1233;1236;1237 | | Name C | GHI

我有一个数据框:

+--------+---------+------+----------------+
|  Name  | Address |  ID  |   Linked_To    |
+--------+---------+------+----------------+
| Name A | ABC     | 1233 | 1234;1235      |
| Name B | DEF     | 1234 | 1233;1236;1237 |
| Name C | GHI     | 1235 | 1234;1233;2589 |
+--------+---------+------+----------------+
“链接到”列中的某些ID是“名称”列下的记录。我可以创建一个字典,并将“链接到”列中的数据作为列表传递。然而,我不确定如何进行。理想情况下,我希望看到以下内容:

+--------+---------+------+-------------------------+
|  Name  | Address |  Id  |        Linked To        |
+--------+---------+------+-------------------------+
| Name A | ABC     | 1233 | Name B;Name C           |
| Name B | DEF     | 1234 | Name A;Name D; Name E   |
| Name C | HIJ     | 1235 | Name B;Name A; None     |
+--------+---------+------+-------------------------+

要做到这一点,没有一些循环似乎很难:

linked = df.Linked_To.str.split(';')

def pull_name(iden):
    try:
        return df[df.ID == int(iden)].Name.iat[0]
    except:
        return str(None)

res = linked.apply(lambda ids: '; '.join([pull_name(i) for i in ids]))

print(res)
0         Name B; Name C
1     Name A; None; None
2    Name B; Name A; ...
Name: Linked_To, dtype: object

你的名字1和名字A有什么关系?这两个数据帧相关吗?@ScottBoston为了清晰起见编辑了表格。名称A=名称1。我已对上述内容进行了相应的编辑。