如何将CSV中name列按chain列分组?求高效实现方法
按Chain分组并将Name列转换为多列的高效实现方式
可以用Pandas的分组计数+透视表来快速实现需求,这是处理这类表格重塑场景的高效方案,代码逻辑清晰且性能优异:
步骤说明
- 读取CSV数据:用
pandas.read_csv加载你的CSV文件。 - 生成组内序号:为每个
chain分组下的name条目分配递增序号,确保同一分组内的条目能按顺序对应到同一行。 - 透视表重塑结构:通过透视表将
chain转为列名,序号作为行索引,name作为单元格值,直接得到目标格式。
完整代码示例
import pandas as pd # 替换为你的CSV文件路径 df = pd.read_csv("your_data.csv") # 为每个chain分组内的条目生成从1开始的序号 df["row_id"] = df.groupby("chain").cumcount() + 1 # 执行透视表转换 output_df = df.pivot(index="row_id", columns="chain", values="name") # 移除列索引的名称(可选,让输出更贴近示例格式) output_df.columns.name = None # 查看结果 print(output_df)
补充说明
- 如果不同
chain的条目数量不一致,结果中较短的列会出现NaN,可以用output_df.fillna("")将空值替换为空白字符串。 - 该方案基于Pandas的向量化操作,比手动循环拼接或多次
merge效率高得多,适合处理大容量CSV数据。
内容的提问来源于stack exchange,提问作者Juhyuk Park
相关产品推荐
相关产品推荐

