首页 > 解决方案 > ValueError:DataFrame 的真值对于条件 if 语句不明确

问题描述

我在使用数据框存储库存数据并根据列是否包含字符串(“abc”)和状态是否为“可用”创建条件 if 语句时遇到问题。同一类型的项目可能有多行,所以我认为这是问题的一部分,但不确定如何处理。如果项目名称等于包含的字符串并且状态可用,我只想发送电子邮件通知。

mergedf = pd.merge(df, df2)
         
item1 = mergedf[mergedf['name'].str.lower().str.contains("item1") & mergedf['status'].str.lower().str.contains("available")]
        
item2 = mergedf[mergedf['name'].str.lower().str.contains("item2") & mergedf['status'].str.lower().str.contains("available")]
        
item3 = mergedf[mergedf['name'].str.lower().str.contains("item3") & mergedf['status'].str.lower().str.contains("available")]
        
item4 = mergedf[mergedf['name'].str.lower().str.contains("item4") & mergedf['status'].str.lower().str.contains("available")]
        
print(item1)
print(item2) 
with open ("recipientlist.txt", "r+") as f:
      email_list = [line.strip() for line in f]
        for email in email_list:
            if email == "abc@gmail.com" and item1 or item2:
                        send_email()
                        print("email sent!")
            elif email == "xyz@gmail.com" and item3 or item4:
                        send_email()
                        print("email sent!")
            else:
                        print("no emails sent, nothing in stock")

Empty DataFrame
Columns: [sku, name, price, manufacturer, status, url, status check]
Index: []
       sku  ... status check
0  134463  ...         True

Traceback (most recent call last) ValueError: DataFrame 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。

标签: pythonpandas

解决方案


推荐阅读