Pandas read_csv读取csv文件时列名无法识别(含不可打印字符)问题
问题定位与解决
首先明确两个核心问题:
loc访问语法错误pd.DataFrame.loc传入单个参数时默认是匹配行索引,你要按列名访问数据,需要明确指定行、列两个维度,或者直接用列索引取值,两种正确写法如下:
# 直接取列 data_olymp[" winter_games_bronze_won"] == 9 # loc指定全量行、目标列 data_olymp.loc[:, " winter_games_bronze_won"] == 9
- CSV表头携带多余空白字符(并非不可打印字符)
你提供的CSV表头使用分号作为分隔符,每个分号后都跟随了1个或多个空格,这些空格会直接被识别为列名的一部分:
- 普通列名前带1个空格:例如
; summer_games_played实际列名为summer_games_played - 部分列名前带2个空格:例如
; winter_games_silver_won实际列名为winter_games_silver_won
你传入的' winter_games_bronze_won'本身带前导空格和列名是匹配的,报错的核心原因是loc的使用方法错误。
永久修复列名空格问题
如果不想每次调用列名都带前导空格,可以在读取数据后统一处理列名:
import pandas as pd data_olymp = pd.read_csv("Olympics_data.csv", sep=";") # 清除所有列名前后的空白字符 data_olymp.columns = data_olymp.columns.str.strip()
处理完成后即可直接使用无空格的列名访问:
print(data_olymp["winter_games_bronze_won"] == 9)
内容的提问来源于stack exchange,提问作者LostITStudent
相关产品推荐
相关产品推荐

