2017-09-18 5 views
0

Trotz der wahnsinnigen Anzahl von Listenfragen auf dieser Website konnte ich das immer noch nicht richtig machen.Listenmanipulation in Python - Breakout und Transponieren

Das erste Element in der Liste ist eine andere Liste. Versuchen, das auszubrechen und dann vertikal zu bevölkern. diese

have = [[['v', 'e', 'r', 't'], 'A', 'B', 'C', 'D'], 
     [['v', 'e', 'r', 't'], 'E', 'F', 'G', 'H']] 

want = [['v', 'A', 'B', 'C', 'D'], 
     ['e', 'A', 'B', 'C', 'D'], 
     ['r', 'A', 'B', 'C', 'D'], 
     ['t', 'A', 'B', 'C', 'D'], 
     ['v', 'E', 'F', 'G', 'H'], 
     ['e', 'E', 'F', 'G', 'H'], 
     ['r', 'E', 'F', 'G', 'H'], 
     ['t', 'E', 'F', 'G', 'H']] 

Antwort

1

Verwendung:

have = [[['v', 'e', 'r', 't'], 'A', 'B', 'C', 'D'], 
    [['v', 'e', 'r', 't'], 'E', 'F', 'G', 'H']] 
df = pd.DataFrame(have) 

(df[0].apply(pd.Series).stack().reset_index(level=1, drop=True) 
    .to_frame() 
    .merge(df, left_index=True, right_index=True,suffixes=('','_r')) 
    .drop('0_r',axis=1).values.tolist()) 

Ausgang:

[['v', 'A', 'B', 'C', 'D'], 
['e', 'A', 'B', 'C', 'D'], 
['r', 'A', 'B', 'C', 'D'], 
['t', 'A', 'B', 'C', 'D'], 
['v', 'E', 'F', 'G', 'H'], 
['e', 'E', 'F', 'G', 'H'], 
['r', 'E', 'F', 'G', 'H'], 
['t', 'E', 'F', 'G', 'H']] 
+0

Dank Scott! Große Antwort und es hat für mich funktioniert. – Josh

+0

tat ich und markierte es als Antwort. Nicht sicher, was mit diesen Phantom-Stimmen passiert ist. – Josh