【问题标题】:argument of type 'numpy.int64' is not iterable'numpy.int64' 类型的参数不可迭代
【发布时间】:2016-03-31 05:05:08
【问题描述】:

我已经通过论坛进行了检查,但似乎无法完成这项工作。我有一个 CSV 文件,有 1300 行。一列是标题 ID。 ID 列是一个六位数字。当我尝试使用此代码查找特定号码时:

    df[df['ID'].map(lambda ID: "342270" in ID)]

我在回溯中得到以下信息。

TypeError                                 Traceback (most recent call         last)
<ipython-input-12-dbef5920f124> in <module>()
----> 1 df[df['ID'].map(lambda ID: "342270" in ID)]

/home/noteleks/anaconda3/lib/python3.5/site-packages/pandas                /core/series.py in map(self, arg, na_action)
                                                                                  2119                                                                               index=self.index).__finalize__(self)
   2120         else:
   -> 2121             mapped = map_f(values, arg)
  2122             return self._constructor(mapped,
  2123                                          index=self.index).__finalize__(self)

pandas/src/inference.pyx in pandas.lib.map_infer (pandas/lib.c:63043)()

<ipython-input-12-dbef5920f124> in <lambda>(ID)
----> 1 df[df['ID'].map(lambda ID: "342270" in ID)]

TypeError: argument of type 'numpy.int64' is not iterable

【问题讨论】:

  • 试试这个df[df.ID == 342270]

标签: python pandas


【解决方案1】:

在这种情况下你不需要 lambda 函数:

df[df.ID == 342270]

应该做的伎俩

【讨论】:

    【解决方案2】:

    当您使用in ID 时,您实际上是在遍历ID 并查看其中是否有任何项目等于in 之前的项目。您是否想在这里使用str()

    df[df['ID'].map(lambda ID: "342270" in str(ID)]
    

    或者您可能想看看ID 是否与342270 相同:

    df[df['ID'].map(lambda ID: ID == 342270)]
    

    【讨论】:

    • 谢谢你,我会把它放在我的工具箱里。
    猜你喜欢
    • 1970-01-01
    • 2020-10-28
    • 1970-01-01
    • 2012-12-26
    • 1970-01-01
    • 2020-10-31
    • 2021-01-15
    • 2017-01-07
    相关资源
    最近更新 更多