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
相关产品推荐
相关产品推荐

