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
相关产品推荐
相关产品推荐

