繁体   English   中英

pandas 将某些列值转换为行

[英]pandas convert some column values to rows

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

在此处输入图像描述

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

在此处输入图像描述

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

尝试这个:

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

Output:

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

Output:

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

Output:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM