在仅含一行数据的Pandas DataFrame中获取指定列的值
解决Pandas DataFrame获取
open列时的AttributeError问题 嘿,这个问题我太熟了!你遇到的AttributeError大概率有两个原因,咱们一步步来解决:
首先,排查核心原因
你用df.open报错,但dtypes里明明显示有open列,最可能的情况是:
- 列名有隐藏的空格/特殊字符:从你给出的dtypes输出格式(
open ----> float64)来看,列名open后面可能跟着空格或者看不见的转义字符,导致你用df.open找不到它; - 命名冲突:
open是Python的内置函数名,虽然Pandas通常会优先识别列名,但这种和内置关键字/函数重名的列,用.访问很容易出问题。
解决方案
1. 先确认列名的真实面目
先运行这段代码,看看列名的真实情况:
# 打印所有列名的列表 print(df.columns.tolist()) # 更细致地检查每个列名(能显示看不见的字符) for col in df.columns: print(repr(col))
如果输出里open列名带有空格(比如'open '),那你就需要用带空格的列名来访问。
2. 稳妥的列访问方式
不管列名有没有问题,永远优先用方括号[]的方式访问列,这是最可靠的:
# 正常列名的情况 print(df['open']) # 如果列名有空格,就用带空格的字符串 # print(df['open '])
为什么df.open不行?
.的访问方式只适用于列名是合法Python标识符的情况:
- 列名不能有空格、特殊字符(比如
-、@) - 列名不能是Python关键字(比如
class、def)或内置函数名(比如open、print)
所以哪怕你的open列名完全正常,用df['open']也比df.open更安全,能避免各种潜在冲突。
内容的提问来源于stack exchange,提问作者soji
相关产品推荐
相关产品推荐

