我正在尝试使用contains在dataframe列中搜索字符串
1。
for idx, row in df.iterrows():
if(row['name'].str.contains('abc')):
上面的代码抛出此错误
AttributeError: 'str' object has no attribute 'str'
2。
for idx, row in df.iterrows():
if(row['name'].contains('abc')):
第二个代码抛出此错误
AttributeError: 'str' object has no attribute 'contains'
答案 0 :(得分:0)
row['Name']
将返回一个不是熊猫系列的字符串,因此您不能使用.str.contains
而不是逐行循环,可以将其应用于整个列df['row'].str.contains('abc')
,这将返回一个系列布尔。
答案 1 :(得分:0)
row['name']
是一个字典,其值为您要搜索的字符串。要以向量化方式进行搜索,您无需使用iterrows()
:
df['name'].str.contains('abc')
将返回布尔值索引,因为它使用了大熊猫Series string contains method.
在行级别(如果需要的话),只需使用in
:
for idx, row in df.iterrows():
if 'abc' in row['name']:
答案 2 :(得分:0)
您应该遍历各列以搜索您的字符串,即:
for column in df.columns:
df[column].str.contains('some_value')
我不确定您将如何使用它,但是如果您只是想知道列中的任何行是否包含字符串,则可以使用.any()
。这将返回True
或False
。虽然上面的代码为您返回了一系列
for column in df.columns:
df[column].str.contains('some_value').any()