You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Pandas中如何使用变量作为列名通过df.loc选取对应列

实现方法说明

1. 关于df.loc[response]写法的可行性

这种写法是错误的,df.loc的单参数默认匹配行索引,而非列名,无法实现按列名筛选的需求,会返回匹配行索引的结果或者直接报错。

2. 正确实现方式

你可以根据需求选择以下任意一种写法:

  • 最简写法(直接取列)
    如果你需要返回Series格式的单列数据,直接用:
    df[response]
    如果你需要返回保留DataFrame结构的单列数据,把变量套入列表即可:
    df[[response]]
  • 用loc实现的标准写法
    loc语法规则为df.loc[行筛选条件, 列筛选条件],需要筛选所有行、匹配目标列的话,行位置传冒号即可:
    df.loc[:, response]
    同样要保留DataFrame结构的话修改为:
    df.loc[:, [response]]

3. 带输入校验的完整示例

考虑到是用户手动输入,建议增加列名校验逻辑,避免输入非法值导致报错:

import pandas as pd

# 示例DataFrame,替换为你自己的实际数据
df = pd.DataFrame({
    "Apple": [1, 3, 5, 7],
    "Tree": [2, 4, 6, 8],
    "Other": [10, 20, 30, 40]
})

# 获取用户输入并去除首尾空白
response = input("请输入内容,可选值为Apple/Tree:").strip()

if response in df.columns:
    # 筛选匹配列,此处返回DataFrame格式
    result = df[[response]]
    print(result)
else:
    print("输入无效,请输入Apple或Tree")

内容的提问来源于stack exchange,提问作者johnlemon9

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 04:06:07