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

R语言如何基于列内容将长格式dataframe转换为宽格式

长表转宽表高效实现方案

这是典型的长格式数据转宽格式需求,针对数百万行级别的数据量,直接使用底层优化过的库即可实现高性能转换,以下是两种主流开发环境的实现方案:

Python 环境

优先方案:Polars(推荐,百万行数据毫秒级完成,性能远超pandas)

import polars as pl

# 若数据已存为pandas DataFrame可直接转换:df = pl.from_pandas(pandas_df)
# 也可以直接读入原始文件:df = pl.read_csv("your_data_path.csv")

# 执行长转宽操作
wide_df = df.pivot(
    index="Date",
    columns="Item",
    values="size"
)

# 如需转回pandas格式可调用:wide_df.to_pandas()

备选方案:Pandas

import pandas as pd

# 提前将size列转为数值类型,可大幅提升转换效率
df["size"] = pd.to_numeric(df["size"])
wide_df = df.pivot(index="Date", columns="Item", values="size").reset_index()

R 环境

优先使用data.table的dcast实现,是R生态下性能最高的宽表转换方案,远快于tidyr系列函数:

library(data.table)

# 将原始数据转为data.table格式,若直接用fread读入数据则默认就是data.table格式
setDT(df)

# 执行长转宽操作
wide_df <- dcast(df, Date ~ Item, value.var = "size")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:57:02