Панды сбрасывают строки в зависимости от даты и времени - PullRequest
1 голос
/ 16 октября 2019

Я удаляю строки, основываясь на условии datetime, у меня это работает со следующей строкой

df.drop(df[df.index.date == datetime(2017,9,14).date()].index, inplace=True)

Однако, когда я фактически запускаю код, я не передаю datetime(2017,9,14).date() для сравнения я передаю datetime.date(2017,9,14). Таким образом, код будет выглядеть примерно так ...

df.drop(df[df.index.date == datetime.date(2017,9,14)].index, inplace=True)

, но это, очевидно, приводит к ошибке:

«дескриптор« date »требует« datetime.datetime »'объект, но получил' int '"

, что было бы лучшим способом исправить эту проблему, чтобы иметь возможность сравнивать даты.

Ответы [ 2 ]

2 голосов
/ 16 октября 2019

Вы можете упростить код - выберите все строки, если не datetime.date(2017,9,14) - поэтому он удаляет строки с помощью datetime.date(2017,9,14):

rng = pd.date_range('2017-09-13', periods=10, freq='10H')
df = pd.DataFrame({'a': range(10)}, index=rng)  
print (df)
                     a
2017-09-13 00:00:00  0
2017-09-13 10:00:00  1
2017-09-13 20:00:00  2
2017-09-14 06:00:00  3
2017-09-14 16:00:00  4
2017-09-15 02:00:00  5
2017-09-15 12:00:00  6
2017-09-15 22:00:00  7
2017-09-16 08:00:00  8
2017-09-16 18:00:00  9

import datetime
df1 = df[df.index.date != datetime.date(2017,9,14)]
print (df1)
                     a
2017-09-13 00:00:00  0
2017-09-13 10:00:00  1
2017-09-13 20:00:00  2
2017-09-15 02:00:00  5
2017-09-15 12:00:00  6
2017-09-15 22:00:00  7
2017-09-16 08:00:00  8
2017-09-16 18:00:00  9
0 голосов
/ 16 октября 2019

Ошибка генерируется datetime.date(2017,9,14), это не имеет ничего общего с пандами.

Попробуйте:

from datetime import datetime
datetime.date(2017,9,14)

Броски:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-2-8658ce936e92> in <module>
----> 1 datetime.date(2017,9,14)

TypeError: descriptor 'date' requires a 'datetime.datetime' object but received a 'int'

но:

import datetime
datetime.date(2017,9,14)

работает и работает в вашем коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...