#python #pandas
Вопрос:
У меня возникла проблема с использованием фрейма данных для хранения данных инвентаризации и создания условного оператора if на основе того, содержит ли столбец строку («abc») и статус «доступно». Для одного и того же типа элемента может быть несколько строк, поэтому я считаю, что это часть проблемы, но не знаю, как с этим справиться. Я хочу отправить уведомление по электронной почте только в том случае, если имя элемента равно содержащейся строке и статус доступны.
mergedf = pd.merge(df, df2)
item1 = mergedf[mergedf['name'].str.lower().str.contains("item1") amp; mergedf['status'].str.lower().str.contains("available")]
item2 = mergedf[mergedf['name'].str.lower().str.contains("item2") amp; mergedf['status'].str.lower().str.contains("available")]
item3 = mergedf[mergedf['name'].str.lower().str.contains("item3") amp; mergedf['status'].str.lower().str.contains("available")]
item4 = mergedf[mergedf['name'].str.lower().str.contains("item4") amp; 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
Обратная связь (последний последний звонок)
Ошибка значения: Значение истинности кадра данных неоднозначно. Используйте.empty,
a.bool(), a.item(), a.any() или a.all().
Комментарии:
1. Само по себе это не решение, но вы можете упростить свой код, сначала получив все доступные элементы,
available_df = mergedf[mergedf.status == 'available']
а затем выполнив поиск имен элементов в новом фрейме данных. Кроме того, вместоstr.lower().str.contains
этого вы можете простоstr.contains('item1', case=False)
.2. Хорошо, спасибо, я просто напишу код на основе ваших предложений.