python:比较不同日期类型的数据
我有一个比较datetime64[ns]和“2017-01-01”等日期数据的问题 代码如下:python:比较不同日期类型的数据,python,pandas,datetime,dataframe,compare,Python,Pandas,Datetime,Dataframe,Compare,我有一个比较datetime64[ns]和“2017-01-01”等日期数据的问题 代码如下: df.loc[(df['Date']>=datetime.Date(2017.1.1),'TimeRange']='2017.1' 但是,显示了一个错误,并表示描述符“date”需要一个“datetime.datetime”对象,但收到了一个“int”。 如何将datetime64与数据(2017-01-01或2-17-6-1等)进行比较 谢谢演示: 资料来源: In [83]: df = pd.Da
df.loc[(df['Date']>=datetime.Date(2017.1.1),'TimeRange']='2017.1'
但是,显示了一个错误,并表示描述符“date”需要一个“datetime.datetime”对象,但收到了一个“int”。
如何将datetime64与数据(2017-01-01或2-17-6-1等)进行比较
谢谢演示:
资料来源:
In [83]: df = pd.DataFrame({'tm':pd.date_range('2000-01-01', freq='9999T', periods=20)})
In [84]: df
Out[84]:
tm
0 2000-01-01 00:00:00
1 2000-01-07 22:39:00
2 2000-01-14 21:18:00
3 2000-01-21 19:57:00
4 2000-01-28 18:36:00
5 2000-02-04 17:15:00
6 2000-02-11 15:54:00
7 2000-02-18 14:33:00
8 2000-02-25 13:12:00
9 2000-03-03 11:51:00
10 2000-03-10 10:30:00
11 2000-03-17 09:09:00
12 2000-03-24 07:48:00
13 2000-03-31 06:27:00
14 2000-04-07 05:06:00
15 2000-04-14 03:45:00
16 2000-04-21 02:24:00
17 2000-04-28 01:03:00
18 2000-05-04 23:42:00
19 2000-05-11 22:21:00
筛选:
In [85]: df.loc[df.tm > '2000-03-01']
Out[85]:
tm
9 2000-03-03 11:51:00
10 2000-03-10 10:30:00
11 2000-03-17 09:09:00
12 2000-03-24 07:48:00
13 2000-03-31 06:27:00
14 2000-04-07 05:06:00
15 2000-04-14 03:45:00
16 2000-04-21 02:24:00
17 2000-04-28 01:03:00
18 2000-05-04 23:42:00
19 2000-05-11 22:21:00
In [86]: df.loc[df.tm > '2000-3-1']
Out[86]:
tm
9 2000-03-03 11:51:00
10 2000-03-10 10:30:00
11 2000-03-17 09:09:00
12 2000-03-24 07:48:00
13 2000-03-31 06:27:00
14 2000-04-07 05:06:00
15 2000-04-14 03:45:00
16 2000-04-21 02:24:00
17 2000-04-28 01:03:00
18 2000-05-04 23:42:00
19 2000-05-11 22:21:00
非标准日期格式:
In [87]: df.loc[df.tm > pd.to_datetime('03/01/2000')]
Out[87]:
tm
9 2000-03-03 11:51:00
10 2000-03-10 10:30:00
11 2000-03-17 09:09:00
12 2000-03-24 07:48:00
13 2000-03-31 06:27:00
14 2000-04-07 05:06:00
15 2000-04-14 03:45:00
16 2000-04-21 02:24:00
17 2000-04-28 01:03:00
18 2000-05-04 23:42:00
19 2000-05-11 22:21:00
您需要确保与之进行比较的数据的格式也相同。假设您有两个
datetime
对象,您可以这样做:
import datetime
print(df.loc[(df['Date'] >= datetime.date(2017, 1, 1), 'TimeRange'])
这将创建一个
datetime
对象并列出过滤结果。您也可以像上面提到的那样为结果分配一个更新的值。您应该将日期转换为相同的类型,以便能够对其进行比较。例如,您可以看到这篇文章:您的代码有语法错误(未关闭(
beforedf['Date']
)。请将导致特定错误的代码与回溯一起发布。谢谢,@Dadep。非常好的参考。谢谢你,比利,我已经解决了这个问题。谢谢你告诉我这个错误。谢谢,非常容易理解。谢谢,非常容易理解。