我有以下熊猫数据框。
我需要一个for循环来评估熊猫Col_B中的每个单元格,以查看它是否包含字符串'MM'。如果确实包含它,我希望为Col_C输入Col_B中单元格的整个值。我想要的输出将仅显示Col_C的最后三行,其值为“ 500.0MM”。当我运行以下代码时,我得到:
代码:
for row in range(total_rows):
if df.iloc[row,1].str.contains('MM'):
df.iloc[row,2] = df.iloc[row,1]
else:
pass
错误:
AttributeError Traceback (most recent call last)
<ipython-input-10-e4521d65e7b6> in <module>
1 for row in range(total_rows):
----> 2 if df.iloc[row,1].str.contains('MM'):
3 df.iloc[row,2] = df.iloc[row,1]
4 else:
5 pass
AttributeError: 'str' object has no attribute 'str'
在运行循环之前,我曾尝试将Col_B转换为如下所示的字符串,但仍然会收到错误。
df['Col_B'] = df['Col_B'].astype(str)
我意识到循环可能不是最有效的方法,最好使用apply
,但出于其他原因,我需要将其作为循环。
答案 0 :(得分:1)
如果df.iloc [row,1] .str会做什么?如错误消息所述,srting没有属性rep(seq_len(n), seq_len(n))
。我认为您想要的只是使用您刚刚引用的字符串:
str
答案 1 :(得分:0)
df.iloc[row,1]
已返回所需的字符串。因此,您无需使用.str
就可以使用它,并且不需要pandas contains()方法:
for row in range(total_rows):
if 'MM' in df.iloc[row,1]:
df.iloc[row,2] = df.iloc[row,1]
else:
pass