我有一个像这样的数据框:
>>> df
TYPE A B C D
0 IN 550 350 600 360
1 OUT 340 270 420 190
我想把它重塑成这个形状:
AIN AOUT BIN BOUT CIN COUT DIN DOUT
value 550 340 350 270 600 420 360 190
所以我使用这些代码来做到这一点:
ds = df.melt().T.iloc[1:,2:]
ds.columns = ['AIN','AOUT','BIN','BOUT','CIN','COUT','DIN','DOUT']
>>> ds
AIN AOUT BIN BOUT CIN COUT DIN DOUT
value 550 340 350 270 600 420 360 190
它有效,但看起来很愚蠢,列名称是手动输入的,我想知道是否有更好的方法来做到这一点。有什么想法吗?
附注输出数据帧中的“值”微不足道。
一个可能的解决方案:
pd.DataFrame(df.drop('TYPE', axis=1).values.reshape(1,-1, order='A'),
columns=[f'{x}{y}' for x in df.columns[1:] for y in df['TYPE']],
)
输出:
AIN AOUT BIN BOUT CIN COUT DIN DOUT
0 550 340 350 270 600 420 360 190