Python不使用SQL库如何将现有数据切片转换为目标表格格式?
你需要实现的是宽表转长表的操作,对应SQL中的UNPIVOT功能,无需使用SQL相关库,Python场景下有两种常用实现方案:
方案1:使用pandas实现(数据科学方向首选)
pandas是Python数据科学方向的基础工具库,内置的melt方法可以直接实现该需求,代码简洁易维护。
- 先安装依赖(已安装可跳过):
pip install pandas
- 转换代码示例:
import pandas as pd # 读取原始数据,可根据你的文件格式替换为read_excel等方法 df = pd.read_csv("你的原始数据文件路径.csv") # 执行宽转长操作 result_df = pd.melt( df, # 填写不需要展开、要保留的维度列,例如用户ID、地区、产品ID等 id_vars=["产品ID", "所属地区"], # 填写展开后分类列的列名,例如月份、指标名称等 var_name="统计月份", # 填写展开后数值列的列名,例如销售额、用户量等 value_name="指标数值" ) # 打印结果或导出到文件 print(result_df) result_df.to_csv("转换后结果.csv", index=False)
方案2:使用Python标准库csv实现(无第三方依赖)
如果不需要后续数据处理,仅要完成格式转换,可以直接用Python原生内置的csv模块实现,无需安装任何第三方库:
import csv # 配置文件路径 source_file = "原始数据.csv" output_file = "转换结果.csv" with open(source_file, "r", encoding="utf-8") as f: reader = csv.DictReader(f) # 配置需要保留的固定维度列(示例取前2列,可自行修改) fixed_columns = reader.fieldnames[:2] # 配置需要展开的列(示例取第3列及之后的所有列,可自行修改) unpivot_columns = reader.fieldnames[2:] with open(output_file, "w", encoding="utf-8", newline="") as out_f: writer = csv.DictWriter(out_f, fieldnames=fixed_columns + ["分类", "数值"]) writer.writeheader() for row in reader: # 每行原始数据展开为多行 for col in unpivot_columns: new_row = {col_name: row[col_name] for col_name in fixed_columns} new_row["分类"] = col new_row["数值"] = row[col] writer.writerow(new_row)
内容的提问来源于stack exchange,提问作者Baris Giritlioglu
相关产品推荐
相关产品推荐

