2016-03-18 8 views
2
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 

Saat 15:27:30 ile 20 dakika arasında bir zaman aralığı oluşturmak istiyorum. Ya da ertesi gün bul .. Birisi bana bu görev için kod pasajını önerebilir mi?Herhangi bir datetime64 sütunu için ertesi gün dakika farkı nasıl hesaplanır?

+0

15:27:30 - 15:47:30 (dakika) .. –

cevap

1

Ben pd.offsetsDay gibi ya Minute kullanabilirsiniz düşünüyorum: oluşturabilir

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] 

yeni columns:

df['Minutes20'] = df['DateTimeColumn'] + pd.offsets.Minute(20) 
df['NextDay'] = df['DateTimeColumn'] + pd.offsets.Day() 
print df 
    Index  DateTimeColumn   Minutes20    NextDay 
0 5517 2015-04-20 15:27:30 2015-04-20 15:47:30 2015-04-21 15:27:30 
1 5674 2015-04-20 15:37:30 2015-04-20 15:57:30 2015-04-21 15:37:30 
2 5675 2015-04-20 15:37:30 2015-04-20 15:57:30 2015-04-21 15:37:30 
3 5917 2015-04-20 15:49:30 2015-04-20 16:09:30 2015-04-21 15:49:30 
4 5919 2015-04-20 15:49:30 2015-04-20 16:09:30 2015-04-21 15:49:30 
5 6619 2015-04-20 16:18:12 2015-04-20 16:38:12 2015-04-21 16:18:12 
6 6652 2015-04-20 16:36:30 2015-04-20 16:56:30 2015-04-21 16:36:30 
7 6696 2015-04-20 16:21:42 2015-04-20 16:41:42 2015-04-21 16:21:42 

sonraki Day farkı bulabilirsiniz normalize tarafından:

#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 
Eğer zaman aralığı, dizine ilk seti sütuna DateTimeColumn tarafından seçmek istiyorsanız

ve sonra indexer_between_time:

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 

Sen start oluşturabilir ve tarafından offset tarafından end süresi: dakika yani aralığıdır

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 
+0

Çalıştığın için teşekkürler ... ama lütfen bana, tüm tarih kayıtlarını baştan sona değiştirmek için bir veri tabanı üzerinde bir sorgu yazabilirim. Başlangıç ​​= 15:27:30 ve bitiş = 15:47:30 (20 dakika sonra) –

+0

Harika! Bu 'gerçekten yararlı .. ama burada bir değişiklik sonunda bulmak mümkün olduğunu = start time + 10 dakika. Sorguyu> start_time &

+0

Çok teşekkür ederim. Ertesi gün bulduktan sonra saati (saat, dakika = 0) sıfırlamak istedim. Önerdiğin gibi . 2015-04-21 15:27:30 df ['NextDay'] = df ['DateTimeColumn'] + pd.offsets.Day(). Örnek olarak 2015-04-22 00:00:00 .. Lütfen çözümünüzü önerin. Bu benim gereksinimlerimin son kısmı. –

İlgili konular