无法从nyc数据集筛选出财年为2021的行问题求助
筛选NYC数据集2021财年数据的解决方案
先修正代码语法错误
你写的两行代码都存在同一个问题:字符串'2021'的单引号未闭合,右边直接衔接了],这会导致语法异常。先把代码修正为正确格式:
# 修正后的loc写法 n21 = nyc.loc[nyc['Fiscal Year'] == '2021'] # 修正后的布尔索引写法 n21 = nyc[nyc['Fiscal Year'] == '2021']
核心问题:数据类型不匹配
如果修正语法后还是只返回列名(空数据集),大概率是**Fiscal Year列的数值类型和你使用的比较值类型不匹配**:
- 先检查列的数据类型:
print(nyc['Fiscal Year'].dtype) - 如果输出是
int64(整数类型),说明列里的2021是整数格式,你用字符串'2021'对比肯定匹配不到,换成整数2021即可:n21 = nyc.loc[nyc['Fiscal Year'] == 2021] - 如果输出是
object(字符串类型),但还是匹配不到,可能是字符串带有空格或隐藏字符,先清洗列数据:nyc['Fiscal Year'] = nyc['Fiscal Year'].str.strip() n21 = nyc.loc[nyc['Fiscal Year'] == '2021']
关于布尔列表的疑问
你提到第二行代码返回布尔列表,这是语法错误导致的异常输出。正常情况下,nyc['Fiscal Year'] == '2021'(修正引号后)会生成一个布尔Series,直接把这个Series放到方括号里,就会自动筛选出所有值为True的行,也就是你需要的2021财年数据。
验证结果
筛选完成后,用下面的代码确认行数是否符合预期:
print(len(n21)) # 应该输出573477
内容的提问来源于stack exchange,提问作者xxlpb
相关产品推荐
相关产品推荐

