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
相关产品推荐
相关产品推荐

