问题:“float”类型的参数不可iterable”在循环中的行时

2024-10-02 00:31:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图迭代名为“cd”的数据帧中的每一行。 如果一行中的特定单元格(如[row,emp\u accept])包含子字符串,则更新同一数据帧中的另一单元格(如[row,emp\u accept\u a])的值。你知道吗

for row in range(0,len(cd.index),1):
    if 'Master' in cd.at[row,empl_accept]:
        cd.at[row,empl_accept_a] = '1'
    else:
        cd.at[row,empl_accept_a] = '0'

上面的代码不起作用,jupyter笔记本显示错误:

TypeError                                 Traceback (most recent call last)
<ipython-input-70-21b1f73e320c> in <module>
      1 for row in range(0,len(cd.index),1):
----> 2     if 'Master' in cd.at[row,empl_accept]:
      3         cd.at[row,empl_accept_a] = '1'
      4     else:
      5         cd.at[row,empl_accept_a] = '0'

TypeError: argument of type 'float' is not iterable

因为for循环不包含float变量,所以我不确定那里有什么问题。你知道吗


Tags: 数据inmasterforindexlenifcd
2条回答

您需要在数据帧中检查[row,emp\u accept]的值。我确信在您的数据帧中的这个位置会有一些数值。只需打印值,就可以看到问题所在。你知道吗

 print (cd.at[row,empl_accept])

请不要使用循环。您可以批量执行此操作:

cd['empl_accept_a'] = cd['empl_accept'].str.contains('Master').astype(int).astype(str)

这将在列中存储'0'和'1'。也就是说,我不认为将其存储为字符串是一个好主意。您只需将它们存储为bools,使用:

cd['empl_accept_a'] = cd['empl_accept'].str.contains('Master')

例如:

>>> cd
    empl_accept  empl_accept_a
0        Master           True
1         Slave          False
2         Slave          False
3  Master Windu           True

相关问题 更多 >

    热门问题