我正在与一个csv一起工作,该csv列出本地城市向违反住房分摊法的居民发出的引用。列之一具有违规者的地址。我在另一列中添加了这些地址所在的人口普查区域,但由于某种原因,熊猫无法识别它。
例如,在census_tract列中多次出现的普查区之一是7002.00。但是当我输入
citations[citations.census_tract == '7002.00']
我得到的只是具有0行的列标题。
但是当我输入:
citations.census_tract
我在census_tract列中获得了准确的人口普查清单
我应该对列做些什么,以便当我尝试向特定普查区域输出==时,熊猫会读取它?
答案 0 :(得分:1)
您尝试过滤浮点值,但filter是输入中的字符串,
更改:
citations[citations.census_tract == '7002.00']
至:
citations[citations.census_tract == 7002.00]
@jezrael使用np.isclose()
建议的另一种方法:
np.isclose(citations.census_tract,7002.00)
这将根据条件匹配返回一个布尔数组。
答案 1 :(得分:0)
似乎 census_tract 列中的值已被读取为 float 。 如果您打算这样做,则将相关说明更改为:
citations[citations.census_tract == 7002.00]
(不带撇号)。
另一种可能性是该列仅包含“看起来像” float 的值, 但实际上应该将它们视为字符串。
在这种情况下,请读取 csv 文件,其中包含与 此列的类型。像这样:
types_dict = {'census_tract': string}
citations = read_csv('input.csv', dtype=types_dict)
然后,您的指令应执行,但没有错误。
说明的第二版( citations [citations.census_tract] ) 是错误的,因为: