【问题标题】:How can I alter this column so Pandas will recognize it?如何更改此列以便 Pandas 识别它?
【发布时间】:2019-05-27 06:14:51
【问题描述】:

我正在使用一个 csv,其中列出了当地城市向违反家庭共享法的居民发出的引用。其中一列有违规者的地址。我添加了另一列,其中包含这些地址所在的人口普查区,但由于某种原因,pandas 无法识别它。

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

citations[citations.census_tract == '7002.00']

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

但是当我进入时:

citations.census_tract 

我在 census_tract 列中获得了准确的人口普查区列表

我应该如何处理该列,以便当我尝试将输出 == 输出到特定人口普查区时 pandas 会读取它?

【问题讨论】:

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


【解决方案1】:

您正在尝试过滤浮点值,但过滤器是您输入中的字符串,

改变:

citations[citations.census_tract == '7002.00']

到:

citations[citations.census_tract == 7002.00]

@jezrael 使用np.isclose() 建议的另一种方法:

np.isclose(citations.census_tract,7002.00)

这将根据条件匹配返回一个布尔数组。

【讨论】:

    【解决方案2】:

    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]) 错了,因为:

    • pandascensus_tract 列中读取值,
    • 引文中查找,其中包含刚刚读取的名称。

    【讨论】:

      猜你喜欢
      • 2018-04-18
      • 2011-01-05
      • 2019-09-13
      • 2011-11-03
      • 1970-01-01
      • 1970-01-01
      • 2019-09-18
      • 2023-03-23
      • 1970-01-01
      相关资源
      最近更新 更多