Pandas 数据框使用列名称重塑[重复]

问题描述 投票:0回答:1

我有一个像这样的数据框:

>>> 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

它有效,但看起来很愚蠢,列名称是手动输入的,我想知道是否有更好的方法来做到这一点。有什么想法吗?

附注输出数据帧中的“值”微不足道。

pandas dataframe reshape
1个回答
0
投票

一个可能的解决方案:

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
© www.soinside.com 2019 - 2024. All rights reserved.