为何Pandas提示CSV文件指定列不存在,但实际列已存在?
问题原因与解决方案
核心问题
你的CSV文件使用分号(;)作为字段分隔符,但pd.read_csv()默认以逗号(,)分隔,导致整个表格被错误读取为单一列——你打印的"列名"其实是这一列的名称,是所有真实列名用分号拼接的字符串,并非多个独立列,所以代码找不到目标列。另外你指定的selected_columns里有个错误:";doubt_C"多了前缀分号,真实列名是doubt_C。
修正后的代码
import pandas as pd import pingouin as pg # 用分号作为分隔符读取CSV,同时用原始字符串避免路径转义问题 data = pd.read_csv(r"C:\Users\HP\Desktop\data analysis\Classeur2.csv", header=0, sep=";") # 打印列名验证是否为独立列 print("Column names:", data.columns) # 修正列名列表,去掉多余的分号前缀 selected_columns = ["doubt_A", "doubt_B", "doubt_C", "doubt_D", "doubt_E"] missing_columns = [col for col in selected_columns if col not in data.columns] if missing_columns: print("Error: Columns not found in the DataFrame:", missing_columns) else: data_columns = data[selected_columns] # 计算Cronbach's alpha alpha_score = pg.cronbach_alpha(data=data_columns) print("Cronbach's alpha score:", alpha_score)
关键修正点
- 添加
sep=";"参数,告诉pandas用分号分割字段,正确识别所有列 - 路径改用原始字符串(
r"..."),避免反斜杠的转义问题 - 修正
selected_columns中的";doubt_C"为"doubt_C"
运行修正后的代码后,data.columns会输出独立的列名列表,列存在性检查可正常通过,就能顺利计算Cronbach's alpha了。
内容的提问来源于stack exchange,提问作者CCClarke
相关产品推荐
相关产品推荐

