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

Python处理CSV转列表后筛选New York结果异常,与老师输出不符

解决提取"New York"时的匹配错误问题

常见错误原因及修正方案


1. 先排查列表转换后的结构

转成列表后,每行是包含所有列值的子列表,你得先确认要匹配的"New York"在子列表的哪个位置。比如执行print(df_list[0])查看第一行结构,确保判断时定位到了正确的列索引,而非拿整个行去匹配。

2. 修正循环里的判断逻辑

大概率是你写反了判断条件,或者没指定具体列。比如错误代码可能是这样:

# 错误示例:条件取反,导致输出不含"New York"的行
for row in df_list:
    if "New York" not in row:
        print(row)

改成正确的匹配逻辑,同时指定目标列(假设城市在第0列,根据你的CSV调整):

# 1. 导入库
import pandas as pd

# 2. 读取CSV
df = pd.read_csv("你的文件路径.csv")

# 3. 转成列表(按行转换)
df_list = df.values.tolist()

# 4. 循环查找匹配行
for row in df_list:
    # 把目标列转成字符串,避免非字符串类型报错
    if "New York" in str(row[0]):
        print(row)

3. 更靠谱的pandas原生过滤法(推荐)

其实没必要转列表,pandas自带的过滤方法更高效且不易出错,还能避免循环里的逻辑问题:

import pandas as pd

df = pd.read_csv("你的文件路径.csv")
# 替换成你的CSV里的城市列名,比如"City"
ny_result = df[df["City"].str.contains("New York", case=False)]
# 如果需要转成列表
ny_result_list = ny_result.values.tolist()
print(ny_result_list)

关键提醒

  • 检查CSV里的"New York"是否有空格、大小写差异,比如"new york"或"NewYork",可以用case=False忽略大小写,或者先统一处理字符串格式。
  • 如果目标列是数值类型,一定要转成字符串再判断,否则会匹配失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 13:17:31