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
zeigen Bitte zumindest einige Anstrengungen, SO kein Schreiben von Code-Service ist. –