假设我有一个相当简单的代码,例如
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'
我无法找到纠正措施。
答案 0 :(得分:2)
您当前的代码不起作用,因为iloc[i, 0]
返回标量值,当然,那些没有与它们关联的str
访问器方法。
快速简便的解决方法是在系列级别sum
来电中致电str.contains
。
count = df_import['Company'].str.contains('value', na=False, case=False).sum()
现在,count
包含该列中的匹配数。