Как использовать python для извлечения условных данных из excel

Я пытаюсь прочитать данные из 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() Однако это не помогло

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
371
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Сначала ошибка исходит из вашей строки 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....)

unlockAIML 12.12.2020 06:07

Другие вопросы по теме