Ошибка индексации при попытке найти индекс, в котором выполняется условие - PullRequest
1 голос
/ 16 июня 2020

Я пытаюсь найти индексы переменной, для которой задано условие.

df.loc[df.variable[mask].diff() == 1]

Но когда я его пишу, он возвращает мне нечетную ошибку

IndexingError: Unalignable boolean Series provided as indexer (index of the boolean Series and of the indexed object do not match).

variable - это серия логических значений, а mask - это просто интервал вроде это:

mask = df.time_var.dt.date == datetime.date(2019, 10, 22)

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

1 Ответ

1 голос
/ 17 июня 2020
import pandas as pd


df = pd.DataFrame([[1, 2], [3, 4], [5, 6]])
print(df)
   # 0  1
# 0  1  2
# 1  3  4
# 2  5  6
print(df.loc[pd.Series([True, False, True])])
   # 0  1
# 0  1  2
# 2  5  6
print(df.loc[pd.Series([True, False])])
# Traceback (most recent call last):
# pandas.core.indexing.IndexingError: Unalignable boolean Series provided as indexer (index of the boolean Series and of the indexed object do not match).

df.variable[mask].diff() == 1 - это логическая серия, длина которой отличается от длины df, поэтому pandas не может решить, какие строки выбрать. Вероятно, вы можете использовать это:

df.loc[(df.variable[mask].diff() == 1).index]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...