【问题标题】:why I got an error ''float' object is not iterable' while using apply lambda [closed]为什么在使用应用 lambda 时出现错误“浮动”对象不可迭代
【发布时间】:2021-02-09 00:34:28
【问题描述】:

我尝试将中国省份列表转换成拼音使用拼音包,代码如下:

df['province'] = df['comb_province'].apply(lambda x: pinyin.get(x, format="strip", delimiter=''))

但我收到一条错误消息:'float' 对象不可迭代。为什么会发生这种情况?我该如何解决?

谢谢!

【问题讨论】:

  • 请提供预期的minimal, reproducible example (MRE)。显示中间结果与您的预期不同的地方。我们应该能够复制和粘贴您的代码的连续块,执行该文件,并重现您的问题以及跟踪问题点的输出。这让我们可以根据您的测试数据和所需的输出来测试我们的建议。
  • include a minimal data frame 作为您的 MRE 的一部分。

标签: python lambda apply pinyin


【解决方案1】:

您可能在 df["comb_province"] 列中遇到过numpy.nanNone 值。因此,您可以尝试使用以下代码使用 numpy.nan 删除这些行:

df = df[~df["comb_province"].isnull()]

或者如果您希望使用 numpy.nan 或 None 保留行,则使用以下内容:

df["comb_province"] = df["comb_province"].astype(str)

您的原始代码可能是stripsplit,与字符串操作有关,遇到numpy.nan 或None 时会抛出错误。

【讨论】:

  • 如果我想保留所有行,即使是 nan 值?我可以在代码中添加一些东西吗?我尝试最后添加“如果 x 不是无”,但它没有工作..
  • 正如您所解释的,输入数据帧也可能具有 None 类型,然后尝试按照建议将它们转换为 str 类型。
  • @Qing 如果您能接受我的解决方案作为答案,如果它有助于解决您的问题,我将不胜感激。
猜你喜欢
  • 2021-03-01
  • 2021-05-16
  • 1970-01-01
  • 2023-03-09
  • 2014-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-28
相关资源
最近更新 更多