Python 如何计算任何datetime64列第二天的分钟差?
我想生成一些时间范围,比如15:27:30到20分钟。或者第二天找到。。有人能给我推荐这项任务的代码片段吗?我想你可以用像Python 如何计算任何datetime64列第二天的分钟差?,python,pandas,dataframe,Python,Pandas,Dataframe,我想生成一些时间范围,比如15:27:30到20分钟。或者第二天找到。。有人能给我推荐这项任务的代码片段吗?我想你可以用像天或分钟: Index DateTimeColumn 5517 2015-04-20 15:27:30 5674 2015-04-20 15:37:30 5675 2015-04-20 15:37:30 5917 2015-04-20 15:49:30 5919 2015-04-20 15:49:30 6619 2015-04-20 1
天
或分钟
:
Index DateTimeColumn
5517 2015-04-20 15:27:30
5674 2015-04-20 15:37:30
5675 2015-04-20 15:37:30
5917 2015-04-20 15:49:30
5919 2015-04-20 15:49:30
6619 2015-04-20 16:18:12
6652 2015-04-20 16:36:30
6696 2015-04-20 16:21:42
您可以创建新的列
:
print df['DateTimeColumn'] + pd.offsets.Minute(20)
0 2015-04-20 15:47:30
1 2015-04-20 15:57:30
2 2015-04-20 15:57:30
3 2015-04-20 16:09:30
4 2015-04-20 16:09:30
5 2015-04-20 16:38:12
6 2015-04-20 16:56:30
7 2015-04-20 16:41:42
Name: DateTimeColumn, dtype: datetime64[ns]
print df['DateTimeColumn'] + pd.offsets.Day()
0 2015-04-21 15:27:30
1 2015-04-21 15:37:30
2 2015-04-21 15:37:30
3 2015-04-21 15:49:30
4 2015-04-21 15:49:30
5 2015-04-21 16:18:12
6 2015-04-21 16:36:30
7 2015-04-21 16:21:42
Name: DateTimeColumn, dtype: datetime64[ns]
您可以通过以下方式找到与下一天的差异:
如果要按时间范围选择,请首先将列DateTimeColumn
设置为索引,然后:
您可以通过以下方式创建开始
和结束
时间偏移
:
print df
Index DateTimeColumn
0 5517 2015-04-20 15:27:30
1 5674 2015-04-20 15:37:30
2 5675 2015-04-20 15:37:30
3 5917 2015-04-20 15:49:30
4 5675 2015-04-21 15:37:30
5 5917 2015-04-22 15:49:30
6 5919 2015-04-23 15:49:30
7 6619 2015-04-20 16:18:12
8 6652 2015-04-20 16:36:30
9 6696 2015-04-20 16:21:42
start = pd.to_datetime('15:27:30').time()
end = pd.to_datetime('15:47:30').time()
print start
15:27:30
print end
15:47:30
df.index = df['DateTimeColumn']
print df.ix[df.index.indexer_between_time(start, end)]
Index DateTimeColumn
DateTimeColumn
2015-04-20 15:27:30 5517 2015-04-20 15:27:30
2015-04-20 15:37:30 5674 2015-04-20 15:37:30
2015-04-20 15:37:30 5675 2015-04-20 15:37:30
2015-04-21 15:37:30 5675 2015-04-21 15:37:30
这是分钟的范围,即15:27:30到15:47:30(分钟)…感谢它的工作。。但是你能建议我在数据框上写一个查询来选择从头到尾的所有日期记录吗。开始=15:27:30和结束=15:47:30(20分钟后)太好了!!那真的很有帮助。。但是这里的一个变化是可以找到结束=开始时间+10分钟。我可以执行如下查询:开始时间和结束时间。非常感谢。。我想在第二天找到后重置时间(小时,分钟=0)。正如你所建议的。2015-04-21 15:27:30 df['NextDay']=df['DateTimeColumn']+pd.offset.Day()。类似的例子是2015-04-22 00:00:00。。请提出你的解决方案。这是我需求的最后一部分。我认为您可以使用
dt.normalize()
,正如我在下一行中建议的那样。或者你需要别的什么?
#df['Minutes20'] = df['DateTimeColumn'] + pd.offsets.Minute(20)
df['NextDay'] = df['DateTimeColumn'] + pd.offsets.Day()
df['NextDayNorm'] = df['NextDay'].dt.normalize()
df['NextDayDiff'] = df['NextDay'].dt.normalize() - df['DateTimeColumn']
print df
Index DateTimeColumn NextDay NextDayNorm NextDayDiff
0 5517 2015-04-20 15:27:30 2015-04-21 15:27:30 2015-04-21 08:32:30
1 5674 2015-04-20 15:37:30 2015-04-21 15:37:30 2015-04-21 08:22:30
2 5675 2015-04-20 15:37:30 2015-04-21 15:37:30 2015-04-21 08:22:30
3 5917 2015-04-20 15:49:30 2015-04-21 15:49:30 2015-04-21 08:10:30
4 5919 2015-04-20 15:49:30 2015-04-21 15:49:30 2015-04-21 08:10:30
5 6619 2015-04-20 16:18:12 2015-04-21 16:18:12 2015-04-21 07:41:48
6 6652 2015-04-20 16:36:30 2015-04-21 16:36:30 2015-04-21 07:23:30
7 6696 2015-04-20 16:21:42 2015-04-21 16:21:42 2015-04-21 07:38:18
print df
Index DateTimeColumn
0 5517 2015-04-20 15:27:30
1 5674 2015-04-20 15:37:30
2 5675 2015-04-20 15:37:30
3 5917 2015-04-20 15:49:30
4 5675 2015-04-21 15:37:30
5 5917 2015-04-22 15:49:30
6 5919 2015-04-23 15:49:30
7 6619 2015-04-20 16:18:12
8 6652 2015-04-20 16:36:30
9 6696 2015-04-20 16:21:42
start = pd.to_datetime('15:27:30').time()
end = pd.to_datetime('15:47:30').time()
print start
15:27:30
print end
15:47:30
df.index = df['DateTimeColumn']
print df.ix[df.index.indexer_between_time(start, end)]
Index DateTimeColumn
DateTimeColumn
2015-04-20 15:27:30 5517 2015-04-20 15:27:30
2015-04-20 15:37:30 5674 2015-04-20 15:37:30
2015-04-20 15:37:30 5675 2015-04-20 15:37:30
2015-04-21 15:37:30 5675 2015-04-21 15:37:30
startdate = pd.to_datetime('15:27:30')
enddate = startdate + pd.offsets.Minute(20)
start = startdate.time()
end = enddate.time()
print start
15:27:30
print end
15:47:30