Pandas DataFrame如何基于其他行的值替换部分行并调整列名?
适配任意position列数的两种实现方案
方案1:Python Pandas 简洁实现
直接利用pandas多级表头特性自动合并,不需要手动删行再挨个重命名:
import pandas as pd # 读取时指定前两行为表头,自动处理分隔符前后空格 df = pd.read_csv("你的文件路径.csv", sep="|", header=[0, 1], skipinitialspace=True) # 合并两级表头:第二级是position/result的就取第一级的列名,其余取第二级的位置名 df.columns = [ col1 if col2.strip() in ("position", "result") else col1.strip() for col1, col2 in df.columns ] # 清理冗余空列(原CSV末尾的|会生成空列) df = df.dropna(axis=1, how="all").rename(columns=lambda x: x.strip()) # 导出结果 print(df.to_csv(sep="|", index=False))
方案2:大文件流式处理方案
如果文件体积很大,不需要加载全量数据,逐行处理即可:
- 读第一行:按|分割、去空格、过滤空值,取索引1及之后的所有值存为位置列名列表
- 读第二行:按|分割、去空格、过滤空值,取前2个值拼接上面的位置列表,得到最终表头
- 从第三行开始直接输出原行内容即可
这个方案时间复杂度为O(n),内存占用仅为表头大小,无论position有多少列都可以自动适配。
内容的提问来源于stack exchange,提问作者Jammy
相关产品推荐
相关产品推荐

