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

使用Pandas查询CSV指定列关键词时,如何仅输出目标列值而非整行?

解决Pandas筛选后仅打印指定列的问题

嘿,你的思路完全正确!问题出在你当前的代码里,data[data["Name"] == 'Jeans']返回的是符合筛选条件的整行数据组成的DataFrame,所以用head()打印时会输出整行内容。要只获取特定列的值,只需要在筛选结果后直接指定目标列即可。

方法1:直接在筛选后指定列

你可以在筛选表达式的末尾加上目标列的名称,这样得到的就是该列的Series(如果有多行匹配)或者单个值(如果只有一行匹配):

import pandas as pd
# 定义要读取的列
list_columns = ["Name", "Size","Colour"]
# 读取CSV并只保留指定列
data = pd.read_csv("Database.csv", usecols=list_columns)
# 筛选Name为Jeans的行,并只获取Colour列
keyword = data[data["Name"] == 'Jeans']["Colour"]
# 打印结果
print(keyword.head())

如果只有一行匹配,输出会类似:

0    Black
Name: Colour, dtype: object

方法2:使用.loc更清晰(推荐)

用loc可以更明确地指定行和列的筛选条件,可读性更强:

# 筛选Name为Jeans的行,同时只选取Colour列
keyword = data.loc[data["Name"] == 'Jeans', "Colour"]
print(keyword.head())

方法3:获取单个值(如果确定只有一行匹配)

如果你确定筛选结果只有一行,还可以直接提取单个值,避免Series的输出格式:

# 提取单个值
keyword_value = data.loc[data["Name"] == 'Jeans', "Colour"].iloc[0]
print(keyword_value)

这样输出就是纯文本:

Black

补充说明

  • 如果你的筛选条件可能匹配多行,head()会默认显示前5行;如果要显示所有匹配行,直接用print(keyword)即可。
  • 如果你想同时获取多个指定列,只需要把列名放在列表里,比如data.loc[data["Name"] == 'Jeans', ["Colour", "Size"]]。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.01 03:27:27