如何调整Python Pandas列名位置解决数据错位问题
Pandas导入CSV列名错位问题解决方法
问题分析
你设置的列名列表["session"] + cords共137列,但CSV有效数据从第二列开始、共136列,导致列名与数据错位,最终y68列无数据。要实现第二列对应session列,只需调整数据读取和列名分配逻辑。
可行方案
方案1:读取时直接跳过第一列
通过iloc截取第二列及以后的数据,再分配目标列名:
import pandas as pd cords = ["x1", "y1", ...., "x68", "y68"] # 读取所有数据(无表头) frame = pd.read_csv("hello.csv", sep=';', header=None) # 保留第二列及以后的数据,并设置列名 frame = frame.iloc[:, 1:] frame.columns = ["session"] + cords
方案2:保留第一列并调整列名映射
如果CSV第一列数据需要保留,可先临时命名再调整列名顺序:
import pandas as pd cords = ["x1", "y1", ...., "x68", "y68"] # 读取所有数据并临时命名 frame = pd.read_csv("hello.csv", sep=';', header=None) # 重新分配列名:第一列设为临时名称,第二列开始对应session + cords frame.columns = ["unused_col"] + ["session"] + cords # 可选:删除无用的第一列 frame = frame.drop("unused_col", axis=1)
效果说明
两种方案都能让原CSV的第二列数据对应session列,后续列依次匹配x1到y68,解决y68列无数据的错位问题。
内容的提问来源于stack exchange,提问作者Bendaoud Simou
相关产品推荐
相关产品推荐

