Python AttributeError:返回“str”对象没有属性“str”

Python AttributeError:返回“str”对象没有属性“str”,python,pandas,Python,Pandas,我有以下数据框 我需要一个for循环来计算pandas colb中的每个单元格,看看它是否包含字符串“MM”。如果它确实包含它,我希望为colu_C输入colu_B中单元格的整个值。我希望的输出将仅显示colu_C的最后三行,其值为500.0MM。当我运行以下代码时,我得到: 代码: 对于rangetotal_行中的行: 如果df.iloc[row,1].str.包含'MM': df.iloc[row,2]=df.iloc[row,1] 其他: 通过 错误: AttributeError回溯最近

我有以下数据框

我需要一个for循环来计算pandas colb中的每个单元格,看看它是否包含字符串“MM”。如果它确实包含它,我希望为colu_C输入colu_B中单元格的整个值。我希望的输出将仅显示colu_C的最后三行,其值为500.0MM。当我运行以下代码时,我得到:

代码:

对于rangetotal_行中的行: 如果df.iloc[row,1].str.包含'MM': df.iloc[row,2]=df.iloc[row,1] 其他: 通过 错误:

AttributeError回溯最近一次呼叫last 在里面 1对于范围内的行Total_行: -->2如果df.iloc[row,1].str.包含'MM': 3 df.iloc[row,2]=df.iloc[row,1] 4其他: 5通 AttributeError:“str”对象没有属性“str” 在运行循环之前,我曾尝试将colu_B转换为如下所示的字符串,但仍然出现错误

df['Col_B'] = df['Col_B'].astype(str)
我意识到循环可能不是最有效的方式,使用apply可能是最好的方式,但出于其他原因,我需要它成为一个循环。

df.iloc[row,1]已经返回了您需要的字符串,因为您指定了行和列。因此,您可以在不使用.str的情况下使用它,并且不需要使用以下方法:

对于rangetotal_行中的行: 如果df.iloc[第1行]中的'MM': df.iloc[row,2]=df.iloc[row,1] 其他: 通过
如果df.iloc[row,1].str执行此操作,您希望看到什么?正如错误消息所说,srting没有属性str。我认为您只需要使用刚才引用的字符串:

if "MM" in df.iloc[row,1]:

请不要发布代码、数据或回溯的图像。复制并粘贴为文本,然后将其格式化为代码选择它并键入ctrl-k。。。或者根据具体情况-df.iloc[row,1].endwith'MM.@wwii是的,但这并不等同于原始代码的明显目的。endswith您错过了与给定数据匹配的s。谢谢,@Prune。这就是我所需要的,它解决了我的问题。我的逻辑是,当我运行df[df['Col_B'].str.contains'MM']时,它将返回对包含'MM'的所有字段进行过滤的df。AttributeError:'str'对象没有像二战中所述的'contains'属性,我得到相同的错误类型,但带有'contains'。contains是pandas的一个方法。因为它返回一个普通字符串,所以需要在中使用python的。