Pandas DataFrame提取单一城市数据失败:仅显示表头问题求助
问题排查与解决方案
可能的原因及对应解决步骤
1. 列名不匹配或数据读取异常
从你提供的数据集示例来看,原始数据列名为City,但代码中使用的是Borough列。如果实际数据集的列名并非Borough,代码自然匹配不到数据。另外示例数据里存在用I代替|的错误分隔符,会导致数据读取时列识别混乱,比如城市名可能附带多余符号或被错误分割。
- 解决:
- 先确认数据集实际列名:运行
print(complaints_df.columns)查看列名,若实际是City,将代码中的complaints_df.Borough改为complaints_df.City。 - 修正数据读取逻辑:如果用
pandas读取数据,需指定正确分隔符并处理空格,比如:import pandas as pd complaints_df = pd.read_csv('your_data_file.csv', sep='I', skipinitialspace=True)
- 先确认数据集实际列名:运行
2. 字符串匹配偏差(大小写、空格)
代码中匹配的是"MANHATTAN",但如果数据里的城市名是小写(manhattan)、首字母大写(Manhattan)或带前后空格(MANHATTAN),都会导致匹配失败。
- 解决:
- 统一字符串格式后匹配:
# 去除列值前后空格并转为大写 complaints_df['Borough'] = complaints_df['Borough'].str.strip().str.upper() manhattan_df = complaints_df[complaints_df.Borough == "MANHATTAN"][['Complaint Type', 'Borough']] - 或者使用不区分大小写的匹配:
manhattan_df = complaints_df[complaints_df.Borough.str.lower() == "manhattan"][['Complaint Type', 'Borough']]
- 统一字符串格式后匹配:
3. 数据集无匹配记录
确认数据集中确实存在MANHATTAN的相关记录:运行 print(complaints_df['Borough'].unique()) 查看该列的所有唯一值,确认目标值是否存在。如果没有,需根据实际存在的城市名称调整匹配字符串。
4. 简化代码写法避免潜在问题
你的链式索引写法虽无语法错误,但可以改用更稳妥的loc链式写法:
manhattan_df = complaints_df.loc[complaints_df['Borough'] == "MANHATTAN", ['Complaint Type', 'Borough']]
内容的提问来源于stack exchange,提问作者Petter Nicolai Oppegaard
相关产品推荐
相关产品推荐

