Почему Pandas 'droping by condition' не работает должным образом? - PullRequest
0 голосов
/ 23 января 2020

Мне нравятся все эти методы «на месте», и я пытался использовать их для фильтрации отдельных строк из моего временного ряда данных:

df.drop(df[(df['location'] == 'City17') | (df['location'] == 'City17 ') | (df['location'] == 'CITY17')].index, inplace=True)

Но, что удивительно, это удалило намного больше данных, и у меня остались только осталось одно свидание Дата была где-то посередине моего DateTime интервала; не первый и не последний. Я нашел решение с помощью оператора присваивания следующим образом:

df = df[(df['location'] != 'City17') & (df['location'] != 'City17 ') & (df['location'] != 'CITY17')]

Теперь я теперь, когда назначения короче и работают быстрее, чем inplace методы, но я все еще удивляюсь, почему первый .drop работал так что.

Обновление Благодаря комментарию Хонгси и лучшему ответу по его ссылке, я решил проблему. Точка была в формате столбца даты. Это был object, и после того, как я преобразовал его в DateTime, мой .drop метод работал правильно. Я до сих пор понятия не имею, почему он так оценивает, но это еще одно доказательство того, что все столбцы Date должны иметь тип DateTime.

...