【发布时间】:2020-12-07 15:06:00
【问题描述】:
我有一个看起来像这样的 Pandas DataFrame df:
我希望它们以这种格式出现:
丢失 SignalName 列。我需要这种格式,因为我必须绘制时间与 SDLx 值。我认为它需要某种迭代器,我尝试过 melt 但没有奏效。
【问题讨论】:
-
不要发布图片。请以文字形式复制粘贴。
标签: python python-3.x pandas numpy dataframe
我有一个看起来像这样的 Pandas DataFrame df:
我希望它们以这种格式出现:
丢失 SignalName 列。我需要这种格式,因为我必须绘制时间与 SDLx 值。我认为它需要某种迭代器,我尝试过 melt 但没有奏效。
【问题讨论】:
标签: python python-3.x pandas numpy dataframe
试试这个:
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
重复值,你需要以某种方式聚合时间,这里我选择第一个值,你可以做 sum、mean、max、min 或任何你选择的聚合。
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
【讨论】: