2017-11-01 2 views
2

Ich versuche, eine Pandas Pivot-Tabelle basierend auf einem Pandas-Datenframe zu filtern. Zum Beispiel:Filter Pivot Tabelle basierend auf Dataframe

df1

test_id     gene 
ENSMUSG00000000001.4 Gnai7 
ENSMUSG00000000003.15 Pbsa 
ENSMUSG00000000028.14 Cdc4 

pt1

condition    CAS  CAS  CAS 
replicate    0  1  2 
tracking_id             
ENSMUSG00000000001.4 45.25 46.55 49.88 
ENSMUSG00000000028.14 1.51 1.63 1.62 
ENSMUSG00000000031.15 16.99 17.54 18.69 

Ausgang

condition    CAS  CAS  CAS  gene 
replicate    0  1  2 
tracking_id             
ENSMUSG00000000001.4 45.25 46.55 49.88 Gnai7 
ENSMUSG00000000028.14 1.51 1.63 1.62 Cdc4 

Die merge Methode scheint wie eine mögliche Lösung durch die test_id und tracking_id als Schlüssel verwenden. Obwohl ich nicht sicher bin, wie man auch die gene Spalte in die Ausgabe miteinbezieht.

Danke :)

Antwort

1
pt1.merge(df1, how=left, left_on='condition', right_on ='test_id') 
+0

Dank, bei der Prüfung dieses zurückgibt: 'KeyError:‚condition''. Die pt1.columns sind: 'MultiIndex (levels = ['' CAS ',' TET ',' WT ',' mean '], [0, 1, 2, 3, 4, 5,' ']], labels = [[0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3], [0, 1, 2, 0, 1, 2, 3, 4, 5, 0, 1, 2, 6]], name = ['condition', 'replicate']) ' –

+1

Ok, versuch 'pt1.merge (df1, how = links, left_index = True, right_on =' test_id ')' – Hound

+0

Ich denke, wir kommen näher. Die Ausgabe erfolgt spaltenbasiert anstelle einer Pivot-Tabelle: '," ('CAS', 0) "," ('CAS', 1) "," ('CAS', 2) "," ('TET', 0) "," ("TET", 1) "," ("TET", 2) "," ("TET", 3) "," ("TET", 4) "," ("TET", 5) "," ("WT", 0) "," ("WT", 1) "," ("WT", 2) "," ('mittel', '') ", test_id, Gen, signifikant '. Ist es möglich, den Pivot-Tisch zu warten? –

Verwandte Themen