2016-08-17 1 views
0

Ich versuche, die Reihen von zwei Python-Tabellen zu tauschen, zBWie tausche ich die Zeilen zweier Tabellen in 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 

ich es

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 

Ich habe versucht, mit Hilfe der Beispiele, die hier gegeben Is there a standardized method to swap two variables in Python?, aber keiner von ihnen arbeiten wahrscheinlich sein wollen wegen des Zeilentyps:

In [19]: type(t1[1]) 
    Out[19]: astropy.table.row.Row 

z

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 

d.h. t2 ändert sich nicht. Gibt es eine Lösung? Ich habe auch versucht, die erste Lösung in Python Simple Swap Function, wo ich die Zeile in eine Liste und vertauschte sie, aber es gibt die Assertion Fehler. Kann mir bitte jemand helfen?

Antwort

0

Sieht so aus, als ob sich Ihr Code geändert hat t1[1] und dann hat der neue Wert t2[1] überschrieben. Sie müssen eine explizite Kopie von t1 erstellen, die Kopie ändern und dann t2 basierend auf dem ursprünglichen t1 ändern. Wenn Sie dies mit mehreren Schritten tun müssen, ist es vielleicht einfacher, eine Kopie von jedem zu erstellen und dann jedes Mal die kopierten Daten vom Original zu überschreiben

import copy 

t1_copy = copy.deepcopy(t1) 
t2_copy = copy.deepcopy(t2) 

t1[1], t2[1] = t2_copy[1], t1_copy[1] 
Verwandte Themen