我喜欢循环并检查单元格是否包含“ Ac”或“ Vt字符串”
那是我的df
data={"col1":[2,3,4,5],
"col2":[4,2,4,6],
"col3":[7,6,9,11],
"col4":[14,11,22,8],
"name":["Acsd","Adgf","Vty","Acdf"],
"multi":[1.4,2.5,1.6,2.2]}
df=pd.DataFrame.from_dict(data)
print(df)
我试试这个:
for count1, i in enumerate(df["col1"]):
if df.at[i, "name"].contains("Ac|Vt"):
print("good")
我得到那个错误
AttributeError:“ str”对象没有属性“包含”
我该如何使用包含方式?
答案 0 :(得分:2)
您可以避免完全使用for循环。
为什么不只使用df["name"].str.contains("Ac|Vt")
?
您也可以将结果添加为单独的列:
df.loc[df["name"].str.contains("Ac|Vt"), "status"] = "good"
答案 1 :(得分:2)
让我们尝试使用DataFrame.iterrows
,
for _, j in df.iterrows():
if "Ac" in j['name'] or "Vt" in j['name']:
print('Good')
答案 2 :(得分:1)
无需循环执行。
df.loc[(df.name.str.contains('Ac')|df.name.str.contains('Vt'))]