pandas导入数据时在原始列标题之间插入新列标题的实现咨询
pandas插入自定义列标题操作指南
场景1:原始数据无自带表头,导入时直接指定完整列名
你示例中的写法本身可直接使用,只需保证names参数传入的列表长度和数据实际列数完全匹配即可:
import pandas as pd # 按你想要的顺序把所有列名写全即可 dfFQExp = pd.read_csv(fileFQExp, delimiter='\s+', names=["Original header1", "error1", "Original header2", "error2"])
如果列数较多,可通过循环自动生成列名列表:
# 先把所有原始列名按顺序写好 original_headers = ["Original header1", "Original header2", "Original header3"] full_columns = [] for idx, col in enumerate(original_headers): full_columns.append(col) full_columns.append(f"error{idx+1}") # 按规则生成新插入的列名 dfFQExp = pd.read_csv(fileFQExp, delimiter='\s+', names=full_columns)
如果你的原始文件自带表头,但你想直接覆盖替换成自定义列名,加header=0参数即可:
dfFQExp = pd.read_csv(fileFQExp, delimiter='\s+', header=0, names=full_columns)
场景2:已导入数据带原始表头,需要在现有列之间插入新列
直接使用pandas内置的insert方法即可:
# 先正常导入保留原始表头的数据 dfFQExp = pd.read_csv(fileFQExp, delimiter='\s+') # 插入示例:在第1个原始列(索引为0)后面插入error1列,插入后新列的索引为1 dfFQExp.insert(loc=1, column='error1', value=None) # 在第2个原始列(索引为2)后面插入error2列,插入后新列的索引为3 dfFQExp.insert(loc=3, column='error2', value=None)
批量插入可通过循环实现:
# 按顺序填入要插入的位置、对应的列名 insert_pos = [1,3,5] insert_cols = ['error1','error2','error3'] for pos, col_name in zip(insert_pos, insert_cols): dfFQExp.insert(loc=pos, column=col_name, value=None)
- 注意事项:
insert方法的loc参数为插入后新列的索引位置,从0开始计数value参数可指定新列的默认值,可根据需求改为0、空字符串等任意值- 导入时用
names参数指定列名时,列表长度必须和数据列数完全一致,否则会触发报错
内容的提问来源于stack exchange,提问作者Daniel Irving
相关产品推荐
相关产品推荐

