我正在尝试交换两个python表的行,例如
In [15]: print t2
x y z
---- ---- ----
20.0 30.0 40.0
50.0 60.0 70.0
80.0 90.0 99.0
In [16]: print t1
a b c
--- --- ---
1.0 2.0 3.0
3.0 4.0 5.0
6.0 7.0 8.0
我希望它是
In [15]: print t2
x y z
---- ---- ----
20.0 30.0 40.0
3.0 4.0 5.0
80.0 90.0 99.0
In [16]: print t1
a b c
--- --- ---
1.0 2.0 3.0
50.0 60.0 70.0
6.0 7.0 8.0
我尝试使用这里给出的示例Is there a standardized method to swap two variables in Python?,但是没有一个可能因为行类型而起作用:
In [19]: type(t1[1])
Out[19]: astropy.table.row.Row
e.g。
In [20]: t1[1],t2[1] = t2[1], t1[1]
In [21]: print t1
a b c
---- ---- ----
1.0 2.0 3.0
50.0 60.0 70.0
6.0 7.0 8.0
In [22]: print t2
x y z
---- ---- ----
20.0 30.0 40.0
50.0 60.0 70.0
80.0 90.0 99.0
即。 t2不会改变。它有解决方法吗? 我也尝试使用Python Simple Swap Function中给出的第一个解决方案,其中我将行更改为列表并交换它们但它给出了断言错误。有人可以帮忙吗?
答案 0 :(得分:0)
您的代码看起来已更改t1[1]
,然后新值已覆盖t2[1]
。您需要制作t1的显式副本,更改副本,然后根据原始t1更改t2。如果您必须通过多个步骤执行此操作,那么复制每个步骤可能更安全,然后每次都从原始文件覆盖复制的数据
import copy
t1_copy = copy.deepcopy(t1)
t2_copy = copy.deepcopy(t2)
t1[1], t2[1] = t2_copy[1], t1_copy[1]