polars 长宽格式转换
import polars as pl
# 创建示例数据(宽格式)
df_wide = pl.DataFrame({
"id": [1, 2, 3],
"name": ["Alice", "Bob", "Charlie"],
"math": [90, 85, 92],
"english": [88, 90, 85],
"science": [92, 88, 90]
})
print("原始数据(宽格式):")
print(df_wide)
# 使用 melt() 转换为长格式
df_long = df_wide.unpivot(
index=["id", "name"], # 保持不变的列
on=["math", "english", "science"], # 要转换的列
variable_name="subject", # 新的变量名列
value_name="score" # 新的值列
)
# 使用上面的长格式数据,转换回宽格式
df_back_to_wide = df_long.pivot(
values="score", # 用作值的列
index=["id", "name"], # 作为行索引的列
on="subject" # 作为列名的列
)
print("转换回宽格式:")
print(df_back_to_wide)
评论
发表评论