python - 比较和更新 pandas dataframe 列列表与来自另一列的字符串

标签 python pandas

我有一个 Pandas 数据框:

+--------+---------+------+----------------+
|  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 |
+--------+---------+------+----------------+

Linked_To 列中的一些 ID 是记录,在 Name 列下。我可以创建一个字典并将 Linked_To 列中的数据作为列表传递。但是,我不确定如何进行。理想情况下,我希望看到如下内容:

+--------+---------+------+-------------------------+
|  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

关于python - 比较和更新 pandas dataframe 列列表与来自另一列的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47708081/

相关文章:

python - 设置 Pandas 列时提高性能

python - 在 Pandas 中将字符串转换为小写

python - 如何将 pandas 列分配给其他列,或者如果为 nan 则为默认值?

python - 如何在 python 中使用 turtle 模块绘制颜色环

python - docker exec 上的 Heredoc

python - 使用 Numpy 或 Pandas 根据字符计数对字符串进行矢量化分割

python - 如何在python中捕获值错误

python - 如何匹配数据框中列之间的值

python - 如何使用自定义顺序对 Seaborn 热图的列进行排序?

python - 如何使用 python 从随机文本行中组装出正确表达的句子