Как использовать значение конкретного столбца в предложении Pandas DataFrame where where?

Я пытаюсь выбрать все ячейки в pandas DataFrame, которые отвечают определенным критериям, когда конкретный столбец также соответствует отдельным критериям.

Учитывая следующий DataFrame:

ABCD 1/1 0 1 0 1 1/2 2 1 1 1 1/3 3 0 1 0 1/4 1 0 1 2 1/5 1 0 1 1 1/6 2 0 2 1 1/7 3 5 2 3 

Я хотел бы как-то выбрать данные, где столбец больше его предыдущего значения, когда D также> 1. Синтаксис, который я пытаюсь использовать в настоящее время:

 matches = df[(df > df.shift(1)) & (df.D > 1)] 

Однако, когда я это делаю, я получаю следующую ошибку:

TypeError: не удалось использовать [array ([nan, nan, nan, nan], dtype = object)] с значениями блока [операнды не могут быть переданы вместе с фигурами (2016) (4)]

Примечание: ошибка является прямой копией и прошлым от моего фактического кода, поэтому описание и форма ошибки не будут непосредственно сопоставляться с моим примером DataFrame.

Я знаю, что df.D > 1 вызывает проблему, и сравнение столбцов напрямую с D является допустимым (например, df > df.D ). Что не так с моим синтаксисом при попытке сравнить D со значением 1 и как я могу это сделать?

2 Solutions collect form web for “Как использовать значение конкретного столбца в предложении Pandas DataFrame where where?”

Это должно работать напрямую, но у панд нет радиовещания и оператора (произойдет в 0.14). Вот обходной путь.

 In [74]: df Out[74]: ABCD 1/1 0 1 0 1 1/2 2 1 1 1 1/3 3 0 1 0 1/4 1 0 1 2 1/5 1 0 1 1 1/6 2 0 2 1 1/7 3 5 2 3 

Это операция where, по существу, устанавливает np.nan где условие False

 In [78]: x = df[df>df.shift(1)] In [79]: x Out[79]: ABCD 1/1 NaN NaN NaN NaN 1/2 2 NaN 1 NaN 1/3 3 NaN NaN NaN 1/4 NaN NaN NaN 2 1/5 NaN NaN NaN NaN 1/6 2 NaN 2 NaN 1/7 3 5 NaN 3 

Выбрать по второму условию

 In [80]: x[df.D>1] Out[80]: ABCD 1/4 NaN NaN NaN 2 1/7 3 5 NaN 3 

Я думаю, что проблема в том, что логический массив из операции сдвига меньше, чем другой условный. Попробуйте добавить false к первому условию с нулевым индексом, после чего вы сможете комбинировать два условия.

Я действительно проблема с вторым условным вы могли бы опубликовать результат

 DF.dtypes 

похоже, что это не тип int, учитывая ошибку наномного массива

  • Функция ggplot-ggsave Python не определена
  • Pandas: получить метку для значения в объекте серии
  • добавление нового столбца в dataframe pandas со значениями для определенных элементов?
  • Как читать файлы UTF-8 с помощью Pandas?
  • Обновление панд DataFrame по ключевым словам
  • Получение целочисленного индекса строки Pandas DataFrame, выполняющего условие?
  • Как установить галочку для оси x для графика штрихов, созданного с помощью pandas DataFrame?
  • Частота подсчета python pandas pivot_table в одном колдухе
  • Python - лучший язык программирования в мире.