如何基于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
相关产品推荐
相关产品推荐

