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

Python编写函数从CSV导入的DataFrame中筛选指定城市行生成新DataFrame

你现在的函数逻辑没有语法错误,也补全了返回值逻辑,出现返回结果不符合预期的情况,通常是以下几种原因,对应解决方法如下:

常见问题排查

  1. 列名不匹配
    你筛选时用的列名City需要和CSV里的实际列名完全一致,包括大小写、前后空格。你可以执行以下代码查看实际列名:
print(CityDF.columns.tolist())

如果列名不匹配,把筛选逻辑里的列名改成实际值即可。

  1. 城市值匹配不一致
    CSV中存储的城市名称可能存在大小写差异、前后带空格的情况,和你传入的'London'没有完全匹配,导致筛选结果为空。可以执行以下代码查看所有唯一的城市值:
# 把括号里的'City'改成你实际的城市列名
print(CityDF['City'].unique().tolist())

确认有完全匹配的London值即可,没有的话调整传入的城市名称参数。

优化后的鲁棒版本函数

如果想要避免格式不统一导致的匹配失败,可以用以下优化后的函数,自动处理大小写、前后空格问题,同时避免后续修改新DF时触发pandas的SettingWithCopyWarning:

def rData(newCityDF, CityName):
    # 自动处理列值和传入参数的前后空格、大小写差异
    match_mask = newCityDF['City'].str.strip().str.lower() == CityName.strip().lower()
    UpdatedDF = newCityDF[match_mask].copy()
    return UpdatedDF

结果验证

调用函数后可以执行以下代码确认返回结果是否正确:

import pandas as pd
data_path = 'file.csv' 
CityDF = pd.read_csv(data_path) 
newDF = rData(CityDF, 'London')
# 打印返回结果的行列数,行数不为0说明匹配成功
print(f"匹配到的行数:{newDF.shape[0]},列数:{newDF.shape[1]}")
# 打印前5行数据确认内容
print(newDF.head())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 03:09:04