【发布时间】:2021-02-09 20:49:35
【问题描述】:
我有一个 df 数据框。数据框具有名为“源”、“目标”和“路径”的三列。 Path列是一个列表,值是各个路由器的路径。 “Source”表示各个路由器路径的起点,“Destination”表示各个路由器路径的终点:
Source Destination Path
---------- ------------ -------------------------------------------------
10.0.13.100 10.0.14.100 ['10.0.1.26']
10.0.14.100 10.0.13.100 ['10.0.1.25']
10.0.13.100 10.0.12.100 ['10.0.1.17', '10.0.1.5', '10.0.1.2']
10.0.12.100 10.0.13.100 ['10.0.1.1', '10.0.1.6', '10.0.1.18']
10.0.13.100 10.0.22.100 ['10.0.1.17', '10.0.1.14', '10.0.4.6', '10.0.2.5']
10.0.22.100 10.0.13.100 ['10.0.2.6', '10.0.4.5', '10.0.1.13', '10.0.1.18']
10.0.11.100 10.0.13.100 ['10.0.1.6', '10.0.1.18']
10.0.13.100 10.0.11.100 ['10.0.1.17', '10.0.1.5']
.....................................................................
我想要创建一个名为“Path_Def”的附加列,其中 Path 列的返回路径是参照 Source 和 Destination 列进行评估的。
示例: 我使用路径 [..] 评估起点 -> 10.0.13.100 和目的地 -> 10.0.14.100 并使用其路径 [..] 评估其反向路径或起点 -> 10.0.14.100 和目的地 -> 10.0.13.100 ...]。 我想做的是通过反转这些值将第二条路径的值更改为第一条路径的值(始终指的是起点和终点)。
所以对于列表中的每个值,你应该这样做:
Source Destination Path
10.0.13.100 10.0.22.100 ['10.0.1.17', '10.0.1.14', '10.0.4.6', '10.0.2.5']
10.0.22.100 10.0.13.100 ['10.0.2.5', '10.0.4.6', '10.0.1.14', '10.0.1.17']
.............................................................................
..
我想要的数据框中的结果是这样的:
Source Destination Path_Def
10.0.13.100 10.0.14.100 ['10.0.1.26']
10.0.14.100 10.0.13.100 ['10.0.1.26']
10.0.13.100 10.0.12.100 ['10.0.1.17', '10.0.1.5', '10.0.1.2']
10.0.12.100 10.0.13.100 ['10.0.1.2', '10.0.1.5', '10.0.1.17']
10.0.13.100 10.0.22.100 ['10.0.1.17', '10.0.1.14', '10.0.4.6', '10.0.2.5']
10.0.22.100 10.0.13.100 ['10.0.2.5', '10.0.4.6', '10.0.1.14', '10.0.1.17']
10.0.11.100 10.0.13.100 ['10.0.1.6', '10.0.1.18']
10.0.13.100 10.0.11.100 ['10.0.1.18', '10.0.1.6']
.....................................................................
如何做到这一点?我真的不知道从哪里开始,非常感谢
编辑 @Simon 代码后:
编辑合并 DF:
编辑在最后一个代码之后:
【问题讨论】:
-
行排序有保证吗?即
10.0.14.100 10.0.13.100总是在10.0.13.100 10.0.14.100之后出现 -
不,不幸的是它们分散在数据框中,例如 10.0.14.100 10.0.13.100 在数据框的第七行,而不是 10.0.13.100 10.0.14.100 在数据框的第十二行跨度>
-
所以对于其他人,假设在这种情况下,我将它们放在一起,以便更好地理解我想要实现的目标
标签: python python-3.x pandas dataframe swap