Я пытаюсь прочитать данные из csv и сравнить значение из столбца «Настроение» с
df1 = pd.read_csv('C:\\Python\\hack\\customer_reviews_further_analysis3.csv')
df2 = pd.read_csv('C:\\Python\\hack\\Bank_Offers_data.csv')
cols = ['CustomerRating','CustomerFeedback', 'Sentiment','Bank','Card','TravelnHotel','Rewards','Lifestyle','Charge']
quotes=[]
if ((df1.Sentiment == 1) | (df1.Sentiment == 4)):
if ((df1.CustomerRating == 5) | (df1.CustomerRating == 4)):
while((df1.TravelnHotel == df2.TravelnHotel) & (df1.Rewards == df2.Rewards) & (df1.Lifestyle == df2.Lifestyle) & (df1.Charge == df2.Charge)):
continue
quotes.append(df1['Sentiment','Bank','Card','TravelnHotel','Rewards','Lifestyle','Charge'])
Error:
runfile('C:/Python/ProductComparison_10Dec.py', wdir='C:/Python')
Traceback (most recent call last):
File "C:\Python\ProductComparison_10Dec.py", line 29, in <module>
if ((df1.Sentiment == 1) | (df1.Sentiment == 4)):
File "C:\Users\176226\Anaconda3\lib\site-packages\pandas\core\generic.py", line 1479, in __nonzero__
f"The truth value of a {type(self).__name__} is ambiguous. "
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
Упомянутое предыдущее решение: Истинное значение Серии неоднозначно. Используйте a.empty, a.bool(), a.item(), a.any() или a.all() Однако это не помогло
Сначала ошибка исходит из вашей строки while. Вы опять сравниваете списки друг с другом. Не совсем понятно, что вы там пытаетесь реализовать. Должен ли быть хотя бы один элемент из первого фрейма данных и этот конкретный столбец в том же столбце второго фрейма данных или они должны быть точно такими же. Я предполагаю, что вы пытаетесь реализовать что-то похожее на функцию функции соединения из sql, где один элемент должен существовать в другом наборе.
Не могли бы вы уточнить это?
Возможно, это то, что вы хотели:
if (1 in df1.Sentiment or 4 in df1.Sentiment):
if (5 in df1.CustomerRating or 4 in df1.CustomerRating ):
while (any(x in df2.TravelnHotel for x in df1.TravelnHotel)
& any(x in df2.Rewards for x in df1.Rewards)
& any(x in df2.Lifestyle for x in df1.Lifestyle)
& any(x in df2.Charge for x in df1.Charge)):
continue
quotes.append(df1['Sentiment',
'Bank',
'Card',
'TravelnHotel',
'Rewards',
'Lifestyle',
'Charge'])
Спасибо! условия if работают как положено :). тогда как цикл while и append не работают. Цикл while должен проверить, соответствует ли df1.xparameter == df2.xparameter, а затем игнорировать, иначе добавить эти значения в другой csv, используя quotes.append(df1....)