如何更改此列,以便熊猫能够识别它?

时间:2019-05-27 06:14:51

标签: python-3.x pandas jupyter-notebook

我正在与一个csv一起工作,该csv列出本地城市向违反住房分摊法的居民发出的引用。列之一具有违规者的地址。我在另一列中添加了这些地址所在的人口普查区域,但由于某种原因,熊猫无法识别它。

例如,在census_tract列中多次出现的普查区之一是7002.00。但是当我输入

citations[citations.census_tract == '7002.00']

我得到的只是具有0行的列标题。

但是当我输入:

citations.census_tract 

我在census_tract列中获得了准确的人口普查清单

我应该对列做些什么,以便当我尝试向特定普查区域输出==时,熊猫会读取它?

2 个答案:

答案 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] ) 是错误的,因为:

  • pandas census_tract 列中读取值,
  • 引用中查找,其名称已被读取。