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

如何基于Python Pandas实现按输入城市筛选并展示CSV数据?

解决Pandas按城市筛选CSV数据的问题

嘿,你已经搞定了文件选择和读取的关键步骤,接下来筛选指定城市的数据其实非常直观,用Pandas的布尔索引就能轻松实现!我给你拆解具体操作:

1. 核心筛选逻辑

Pandas的DataFrame支持通过布尔条件直接过滤行。针对你的需求,只需要匹配CITY列和用户输入的城市名称即可。不过要注意大小写和空格问题(比如用户输入denver而CSV里是Denver,或者城市名前后有空格),所以建议统一格式后再匹配:

# 统一转换为小写并去除前后空格,避免匹配误差
filtered_data = df[df['CITY'].str.strip().str.lower() == selectCity.strip().lower()]

2. 完善输出与异常处理

光筛选还不够,我们需要给用户清晰的反馈,同时避免程序因为意外情况崩溃:

  • 如果筛选结果为空,提示用户未找到对应城市的数据
  • 处理文件不存在的情况(比如用户输错文件名)
  • 检查CSV是否包含CITY列,避免结构不符导致报错

完整优化后的代码

import pandas as pd

try:
    fileInput = str(input("Which file would you like to open: "))
    # 用with语句自动管理文件关闭,更安全
    with open(fileInput) as fileOpen:
        df = pd.read_csv(fileOpen)
    
    # 确保CITY列存在,避免KeyError
    if 'CITY' not in df.columns:
        print("Error: The selected CSV file does not have a 'CITY' column!")
    else:
        selectCity = input("Which city would you like to be visualized: ")
        # 筛选数据
        filtered_data = df[df['CITY'].str.strip().str.lower() == selectCity.strip().lower()]
        
        if filtered_data.empty:
            print(f"No data found for city: {selectCity}")
        else:
            print(f"Data for city {selectCity}:")
            print(filtered_data)
except FileNotFoundError:
    print(f"Error: The file {fileInput} was not found!")
except Exception as e:
    print(f"An unexpected error occurred: {str(e)}")

额外说明

  • 使用with open()代替直接open(),可以自动关闭文件,避免资源泄漏
  • 统一字符串格式的处理,能大幅提升用户输入的容错性
  • 异常捕获可以让程序在遇到问题时给出友好提示,而不是直接崩溃

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:24:13