Строка в наборе данных pandas, но не в выбранном столбце данных pandas - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть фрейм данных, в котором один из столбцов имеет одинаковый тип данных строки, и для конкретной строки я хотел проверить, был ли он в этом столбце.Я обнаружил, что простое сравнение дает «False», но после проверки самого фрейма данных я убедился, что конкретная строка действительно находится в этом столбце.С другой стороны, если я преобразовываю выбранный столбец в набор, я получаю ожидаемое поведение.

>>> 'string' in df['col_name']
False
>>> 'string' in set(df['col_name'])
True
  1. Почему у фреймов данных pandas такое поведение?
  2. Это обычный способ проверить, находится ли объект в столбце фрейма данных pandas?

Ответы [ 2 ]

4 голосов
/ 25 сентября 2019

Вам нужно превратить df['col_name'] в список значений.В настоящее время это series объект.

try 'string' in df['col_name'].values.

'string' in df['col_name'] выполняет поиск в index серии

0 голосов
/ 25 сентября 2019

'string' in df['col_name'] переводится как df['col_name'].__contains__('string').Метод Series.__contains__ будет проверять индекс серии, а не значение.

Ниже представлен инструмент серии __contains__ на lib\site-packages\pandas\core\generic.py

def __contains__(self, key):
    """True if the key is in the info axis"""
    return key in self._info_axis

информационная осьэто индекс.


Вам необходимо использовать in для значения ndarray серии.

...