为何pandas中loc[[]]选取单列时出现语法错误?
Pandas中loc[[]]选单列报错的原因
首先得明确loc的调用逻辑:df.loc[行筛选规则, 列筛选规则],如果只写一组括号里的内容,默认是对行进行筛选,而非列。
你遇到的语法错误,大概率是写法不对——比如你可能直接写了df.loc[['max_speed']],这时候Python会把['max_speed']当成行索引的筛选条件,但你的DataFrame行索引是'cobra'、'viper'、'sidewinder',根本找不到'max_speed'这个行标签,自然报错。
官方文档说的[[]]返回DataFrame是对的,但要对应正确的位置:
- 选单行用双括号:
df.loc[['cobra']],这里双括号在行选择器位置,返回DataFrame,没问题; - 选单列用双括号的正确写法是:
df.loc[:, ['max_speed']],其中:表示选中所有行,['max_speed']是列选择器(双括号包裹列名列表),这样就会返回一个只有max_speed列的DataFrame,完全符合文档说明。
再对比几种写法的区别:
- 单括号选单列:
df['max_speed']或df.loc[:, 'max_speed'],返回的是Series; - 双括号选单列:
df.loc[:, ['max_speed']],返回的是DataFrame; - 错误写法
df.loc[['max_speed']]:试图在行索引中找不存在的标签,触发报错。
内容的提问来源于stack exchange,提问作者김예군
相关产品推荐
相关产品推荐

