2016-05-04 6 views
-3

Tabelle sieht wie folgt aus:Erstellen Sie Kopien von jeder Spalte, um es als nächstes für eine Pivot-Tabelle in Pandas

Sensors M001 M002   
Time                      
01:28.2 0  0    
01:40.2 1  1    
01:52.2 0  1    
02:04.2 1  0 

Und ich würde einen Tisch mit 2 neue leere Kopien jeder Spalte erstellen möchten, die aussehen würde:

Sensors M001 M001(on) M001(off) M002 M002(on) M002(off) 
Time                      
01:28.2 0  -  -  0  -   - 
01:40.2 1  -  -  1  -   - 
01:52.2 0  -  -  1  -   - 
02:04.2 1  -  -  0  -   - 
+1

zeigen Bitte zumindest einige Anstrengungen, SO kein Schreiben von Code-Service ist. –

Antwort

0

IIUC Sie loc für die Erstellung neuer Spalten und dann sortieren Spaltennamen von sort_index verwenden können:

for col in df.columns: 
    df.loc[:, col + '(on)'] = np.nan 
    df.loc[:, col + '(off)'] = np.nan 

print df.sort_index(1) 

Sensors M001 M001(off) M001(on) M002 M002(off) M002(on) 
Time               
01:28.2  0  NaN  NaN  0  NaN  NaN 
01:40.2  1  NaN  NaN  1  NaN  NaN 
01:52.2  0  NaN  NaN  1  NaN  NaN 
02:04.2  1  NaN  NaN  0  NaN  NaN 

Eine weitere Option ist es, neue Spaltennamen durch Liste Verständnis schaffen, dann Kreta neue DataFrame und concat es original df:

print df 

Sensors M001 M002 M003 
Time      
01:28.2  0  0  1 
01:40.2  1  1  0 
01:52.2  0  1  1 
02:04.2  1  0  1 

cols = ['{}{}'.format(x, y) for y in ['(on)','(off)'] for x in df.columns.tolist()] 
df1 = pd.DataFrame(columns = cols, index= df.index) 
print df1 
     M001(on) M002(on) M003(on) M001(off) M002(off) M003(off) 
Time                
01:28.2  NaN  NaN  NaN  NaN  NaN  NaN 
01:40.2  NaN  NaN  NaN  NaN  NaN  NaN 
01:52.2  NaN  NaN  NaN  NaN  NaN  NaN 
02:04.2  NaN  NaN  NaN  NaN  NaN  NaN 

df = pd.concat([df,df1], axis=1) 

print df.sort_index(1) 
Sensors M001 M001(off) M001(on) M002 M002(off) M002(on) M003 M003(off) \ 
Time                   
01:28.2  0  NaN  NaN  0  NaN  NaN  1  NaN 
01:40.2  1  NaN  NaN  1  NaN  NaN  0  NaN 
01:52.2  0  NaN  NaN  1  NaN  NaN  1  NaN 
02:04.2  1  NaN  NaN  0  NaN  NaN  1  NaN 

Sensors M003(on) 
Time    
01:28.2  NaN 
01:40.2  NaN 
01:52.2  NaN 
02:04.2  NaN 
+0

Vielen Dank für Ihre Hilfe, die zweite Option funktioniert einwandfrei, beim nächsten Mal krank Post meinen Code – Kira

Verwandte Themen