检查数据框单元格以查看它们是否包含值

时间:2017-09-18 02:23:20

标签: python pandas dataframe

假设我有一个相当简单的代码,例如

import pandas
df_import=pandas.read_excel("dataframe.xlsx")
df_import['Company'].str.contains('value',na=False,case=False)

所以这显然会导入pandas,从excel文档创建一个数据框,然后在标题为Company的列中搜索某个值,并返回一个索引,说明该单元格的值是否包含该值(True或False)

但是,我想测试3个案例。案例A,未找到任何结果(全部为假),案例2,仅发现1个案例(仅1个真实)和案例3,多发现1个案例(#of True> 1)。

我的意思是我可以设置一个for循环,遍历列,如果一个单元格的值为True,我将1添加到一个变量(让我们称之为计数)。然后在最后,我有一个基于count值的if / elif / elif语句,无论是0,1还是>。

现在,也许有更好的方法来检查这个,但如果没有,我认为for循环看起来像

for i in range (len(df_improt.index))
    if df_import.iloc[i,0].str.contains('value',na=False,case=False)
        count += 1

首先,我不确定是否应该使用.iloc或.iat,但两者都给我错误

  

AttributeError:'str'对象没有属性'str'

我无法找到纠正措施。

1 个答案:

答案 0 :(得分:2)

您当前的代码不起作用,因为iloc[i, 0]返回标量值,当然,那些没有与它们关联的str访问器方法。

快速简便的解决方法是在系列级别sum来电中致电str.contains

count = df_import['Company'].str.contains('value', na=False, case=False).sum()

现在,count包含该列中的匹配数。