Python/Pandas:如何透视表,使指定的多索引或列中的唯一值构成结果列名的一部分?



我正在尝试透视一个由 3 列组成的 pandas 表,其中进程 id 标识生成一系列标量值的进程,构成结果数据帧列(每个进程(的一部分,如下所述:

输入

time     scalar     process_id
1        0.5        A
1        0.6        B
2        0.7        A
2        1.5        B
3        1.6        A
3        1.9        B

合成的:

time     scalar_A     scalar_B
1        0.5          0.6
2        0.7          1.5
3        1.6          1.9

我尝试使用unstack(在多索引中设置进程ID之后(,但是这会导致生成它们的列和进程ID嵌套:

bicir.set_index(['time', 'process_id'], inplace=True)
df.unstack(level=-1)

如何最有效/有效地实现这一目标? 谢谢

它实际上已经被 pd 覆盖了。DataFrame.pivot 方法:

new_df = df.pivot(index='time', columns='process_id', values='scalar').reset_index()

输出:

process_id  time    A    B
0              1  0.5  0.6
1              2  0.7  1.5
2              3  1.6  1.9

如果要重命名列:

new_df = df.pivot(index='time', columns='process_id', values='scalar')
new_df.columns = [f'scalar_{i}' for i in new_df.columns]
new_df = new_df.reset_index()

输出:

time  scalar_A  scalar_B
0     1       0.5       0.6
1     2       0.7       1.5
2     3       1.6       1.9

最新更新