You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将列值转为列名?寻求Pandas内置函数实现高效转换

用Pandas内置函数高效实现宽表转换

嘿,你的这个需求完全可以用Pandas的内置pivot函数一步搞定,比手动循环构建字典的方式性能高太多,而且代码简洁到离谱!

核心解决方案

因为你的数据里timestamp和id_的组合是唯一的(没有重复的时间-ID对),直接用pivot就能完美实现你要的格式:

import pandas as pd

# 假设你的原始数据已经读入为DataFrame df
res = df.pivot(index='timestamp', columns='id_', values='value')

为什么这个方法更好?

  • 性能碾压:Pandas的内置函数是基于C语言实现的,比你手动写Python循环快几个数量级,尤其是当数据量很大的时候,差距会非常明显。
  • 代码简洁:一行代码就完成了分组、提取值、构建新DataFrame的全部操作,可读性和维护性都强很多。

转换后的结果

运行上面的代码后,得到的res就是你想要的格式:

a   b
timestamp        
2020-05-01  0  10
2020-05-02  1  11
2020-05-03  2  12
2020-05-04  3  13
2020-05-05  4  14
2020-05-06  5  15
2020-05-07  6  16
2020-05-08  7  17
2020-05-09  8  18
2020-05-10  9  19

特殊情况处理(可选)

如果你的数据里存在重复的timestamp+id_组合(比如同一个ID在同一天有多个value),可以用pivot_table并指定聚合函数来处理:

res = df.pivot_table(index='timestamp', columns='id_', values='value', aggfunc='mean')

这里用mean取平均值,你也可以根据需求换成sum、max等其他聚合函数。

内容的提问来源于stack exchange,提问作者ComplicatedPhenomenon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 08:57:32