我要根据日期时间条件删除行,并使其与以下行一起工作
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'”
解决此问题以比较日期的最佳方法是什么。
答案 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)
有效,并且在您的代码中也有效。