2016-03-18 9 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 

私は15:27:30から20分までの時間範囲を生成したいと思います。または、次の日を見つけてください..誰かが私にこの仕事のためのコードスニペットを提案できますか?どのようにdatetime64列の翌日分を計算するのですか?

+0

15:27:30〜15:47:30(分).. –

答えて

1

私はあなたがDayまたはMinuteのようなpd.offsetsを使用することができると思う:

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] 

あなたは新しい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 

あなたはnormalizeすることにより、次のDayに違いを見つけることができます。

#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 
を あなたは時間範囲、インデックスへの最初のセットの列 DateTimeColumnで選択したい場合

、その後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 

あなたはstart作成できるとすることによりoffsetによってend時間:分すなわちの範囲がある

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

ありがとうございます。しかし、最初から最後まですべての日付レコードを選択するためにdataframeにクエリを書くことができます。開始= 15:27:30と終了= 15:47:30(20分後) –

+0

素晴らしい!それは本当に役に立ちました。しかし、ここでの1つの変更は、終了=開始時間+ 10分を見つけることです。 > start_time&

+0

ありがとうございました。次の日を見つけた後、時間(時、分= 0)をリセットしたかったのです。あなたが提案した通りです。 2015-04-21 15:27:30 df ['NextDay'] = df ['DateTimeColumn'] + pd.offsets.Day()。例は2015-04-22 00:00:00です。解決策を提案してください。これは私の要件の最後の部分です。 –

関連する問題