首页 > 解决方案 > 熊猫将一些列值转换为行

问题描述

我有一个看起来像这样的 Pandas DataFrame df :

在此处输入图像描述

我希望它们以这种格式出现:

在此处输入图像描述

丢失 SignalName 列。我需要这种格式,因为我必须绘制时间与 SDLx 值。我认为它需要某种迭代器,我尝试过融化但没有用。

标签: pythonpython-3.xpandasnumpydataframe

解决方案


尝试这个:

df.set_index(['time','SignalName'])['value'].unstack()

输出:

SignalName  APID1  SLID1  SPID1
time                           
t_1             1      0      2
t_2            11      0     22
t_3             1      0     20

另外的选择:

df_out = df.set_index(['time','SignalName']).unstack()
df_out.columns = [f'{j}{i}' for i, j in df_out.columns]
df_out.reset_index()

输出:

  time  APID1value  SLID1value  SPID1value
0  t_1           1           0           2
1  t_2          11           0          22
2  t_3           1           0          20

重复值,您需要以某种方式聚合时间,这里我选择第一个值,您可以进行求和、平均值、最大值、最小值或您选择的任何聚合。

df.groupby(['time', 'SignalName'])['value'].agg('first').unstack()

输出:

SignalName  APID1  SLID1  SPID1
time                           
t_1             1      0      2
t_2            11      0     22
t_3             1      0     20

推荐阅读