首页 > 解决方案 > 基于唯一值将单列转换为多列

问题描述

我有以下pandas.DataFrame形状(1464, 2)

df = pd.DataFrame()
for name in list('ABCD'):
    temp_df = pd.DataFrame(np.random.randint(0,100,size=(len(date_rng), 1)), columns=['value'], index=date_rng)
    temp_df['name'] = name
    df = df.append(temp_df)

('ABCD')索引列的每个数据重复 4 次:列中的每个字符串一个name

数据帧的头部和尾部如下所示:

value   name
2018-01-01  47  A
2018-01-02  22  A
2018-01-03  13  A
2018-01-04  66  A
2018-01-05  19  A 

尾巴

    value   name
2018-12-28  32  D
2018-12-29  1   D
2018-12-30  5   D
2018-12-31  50  D
2019-01-01  75  D

我想将此数据框转换(1464, 2)为 shape ,这样 4 列中的每一列都是(即)(366, 4)中的 4 个唯一值。每列的值是列中的相应整数。df.name.unique()A, B, C, Ddf.value

最终的 DataFrame 应如下所示:

            A   B   C   D
2018-12-28  32  22  21  4
2018-12-29  1   16  2   12
2018-12-30  5   1   65  26
2018-12-31  50  92  21  75
2019-01-01  75  55  33  34

我确信必须有一个很好的重新索引函数或类似的东西才能有效地执行任务,而不是循环和重新创建数据帧。

标签: pandas

解决方案


你可以使用这个:

df.pivot(columns='name',values='value')

推荐阅读