在pandas数据框列中包含函数(AttributeError:“ str”对象没有属性“ str”

时间:2019-05-29 15:57:44

标签: python pandas

我正在尝试使用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'

3 个答案:

答案 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()。这将返回TrueFalse。虽然上面的代码为您返回了一系列

for column in df.columns:
    df[column].str.contains('some_value').any()