使用Pandas read_csv处理CSV首单元格歧义,实现可正常索引的DataFrame
解决CSV读取时索引与列名的空格歧义问题
问题原因
你的CSV文件中,字段用;分隔但附带前导空格,直接用sep=";"读取时,会导致列名带前导空格(实际是" Int"而非"Int")、索引带前导空格(实际是" A"而非"A"),所以df.loc["A", "Int"]无法匹配到对应单元格。
解决方案
提供两种简单可行的处理方式:
方式1:读取时直接处理空格
利用skipinitialspace=True参数忽略分隔符后的空格,同时指定index_col=0将第一列设为索引:
import pandas as pd df = pd.read_csv('data.csv', index_col=0, sep=";", skipinitialspace=True)
读取后的DataFrame会自动去除索引和列名的前后空格,直接使用df.loc["A", "Int"]就能获取目标值。
方式2:读取后手动清理空格
如果不想修改读取参数,可以先读取原始数据,再去除索引和列名的前后空格:
import pandas as pd df = pd.read_csv('data.csv', index_col=0, sep=";") # 清理索引的空格 df.index = df.index.str.strip() # 清理列名的空格 df.columns = df.columns.str.strip()
处理完成后,df.loc["A", "Int"]即可正常访问单元格。
验证效果
处理后的DataFrame结构如下:
Int Flt A 123 0.1 B 456 0.2 C 789 0.3
执行df.loc["A", "Int"]会返回123,符合预期。
内容的提问来源于stack exchange,提问作者Demaunt
相关产品推荐
相关产品推荐

