pandas读取CSV生成DataFrame后访问列报AttributeError问题求助
问题原因
你配置的读取分隔符和CSV实际的分隔符不匹配,导致列名解析错误:
从你输出的df.columns结果可以看出,当前DataFrame只有1个列,列名是完整的,Name,Growth,Recommendation,CurrentRatio,TotalCash,Debt,Revenue,PercentageSharesOut,PercentageInstitutions,PercentageInsiders,PricetoBook,ShortRatio,RegularMarketPrice字符串,自然不存在名为Debt的列属性。
你原本设置的sep='\s{2,}'是匹配2个以上的空格作为分隔符,但你的CSV实际是逗号分隔的,不符合你设置的分隔规则,所以表头整行被识别为单个列名,所有行数据也都被挤在同一列中。
解决方法
- 修正
read_csv的分隔符参数,CSV默认分隔符为逗号,直接使用默认配置即可:
df = pd.read_csv("watchlist.csv")
如果存在特殊情况需要显式指定,可写为df = pd.read_csv("watchlist.csv", sep=',')。
- 读取完成后先验证列名解析是否正确:
print(df.columns.tolist())
如果输出的列表中存在单独的Debt元素,说明解析成功,此时可以正常访问该列。
- 建议优先使用方括号语法访问列,比属性访问兼容性更强,不会因为列名包含特殊字符、空格,或者和DataFrame自带属性重名而失效:
# 稳妥的访问方式 print(df['Debt']) med_debt = math.floor(df['Debt'])
如果修改后列名仍存在多余的前后空白或符号,可以先统一清理列名:
# 清理列名前后的空白、多余逗号等 df.columns = df.columns.str.strip().str.strip(',')
内容的提问来源于stack exchange,提问作者user13800925
相关产品推荐
相关产品推荐

