2016-08-17 55 views
0

我想交換的兩個Python表中的行,如如何交換python(astropy.table)中兩個表的行?

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 

eg

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

看起來您的代碼已更改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]