pandas - 基于唯一值将单列转换为多列
问题描述
我有以下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, D
df.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
我确信必须有一个很好的重新索引函数或类似的东西才能有效地执行任务,而不是循环和重新创建数据帧。
解决方案
你可以使用这个:
df.pivot(columns='name',values='value')
推荐阅读
- c# - 为什么调用 sp_who 的 tsql 存储过程在通过 SqlCommnad 调用时返回的结果与通过 SSMS 不同?
- sql - 关系模式和完整性约束
- mysql - MySQL 在将新的 ENUM 值添加到现有的 ENUM 列时是否获得锁?
- javascript - TypeError:制作狙击命令时无法读取未定义的属性“get”
- swift - 使用列表中的 .onDelete 从 CoreData 关系中删除项目
- php - 如何在 WordPress 查询中查询相关产品帖子标题而不是整个帖子对象数组?
- python - 分隔包含一组或两组括号的字符串列
- sql - 从众多类别中选择仅属于一个类别的行
- javascript - 如何在shopify中带来最后一次用户购买?
- python - 检查Python中的多键字典中是否存在集合的元素?