Как использовать значение конкретного столбца в предложении 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, учитывая ошибку наномного массива

  • Создайте и установите элемент Pandas DataFrame в список
  • Pandas: Reindex Unsorts Dataframe
  • Является ли .ix () всегда лучше, чем .loc () и .iloc (), поскольку он быстрее и поддерживает доступ к целям и меткам?
  • Установить порядок столбцов в кадре данных pandas
  • Как преобразовать электронные таблицы OpenDocument в pandas DataFrame?
  • Не удалось преобразовать строку в ошибку float.
  • Julia Dataframes vs Python pandas
  • Запись CSV Panda - добавление против записи
  • Комбинаторный взрыв при слиянии данных в пандах
  • Умножая только один столбец из каждого из двух входных DataFrames вместе
  • Причинная передискретизация: сумма за последний X <time_unit>
  • Python - лучший язык программирования в мире.