Как сравнить строковое значение по индексу и столбцу и применить логику ИЛИ ИЛИ внутри фрейма данных? - PullRequest
2 голосов
/ 25 апреля 2019

У меня есть датафрейм, который выглядит так:

   col1
0  ofcourse
1  I love the service

Фрейм данных также может иметь это значение для строки 1:

   col1
0  ofcourse
1  I hate the service

Я хочу сравнить значение строк по строкам и столбцам и иметь возможность проверить одно из двух значений в строке1.

Я хочу создать эту логику:

if df.col1.loc[[0]] =='Of course!' and (df.col1.loc[[1]]=='I love the service' or df.col1.loc[[1]]=='I hate the service'):
    print('good')

Когда я запускаю приведенную выше логику, я получаю ошибку:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

Что я делаю не так?

1 Ответ

2 голосов
/ 25 апреля 2019

Вы должны удалить []

df.col1.loc[0] =='Of course!' and (df.col1.loc[1]=='I love the service' or df.col1.loc[1]=='I hate the service')

Почему это произошло:

df.loc[[0]] вернет DataFrame, так как это DataFrame, когда вы выполнили условие здесь,он вернет DataFrame, что вызовет ошибки

, а

df.loc[0] вернет Series


Подробнее

type(df.loc[[0]])
<class 'pandas.core.frame.DataFrame'>
type(df.loc[0])
<class 'pandas.core.series.Series'>
...