熊猫根据日期时间条件删除行

时间:2019-10-16 05:30:59

标签: python pandas 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 个答案:

答案 0 :(得分:2)

您可以简化代码-如果不是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

答案 1 :(得分:0)

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)

有效,并且在您的代码中也有效。