データフレームの日付と日付の2つの列があります
を使用して2つの日付の違いを見つけるために新しい列の差分を追加しようとすると
df['diff'] = df['todate'] - df['fromdate']
24時間を超えると、diff列を数日で取得します。
2014-01-24 13:03:12.050000,2014-01-26 23:41:21.870000,"2 days, 10:38:09.820000"
2014-01-27 11:57:18.240000,2014-01-27 15:38:22.540000,03:41:04.300000
2014-01-23 10:07:47.660000,2014-01-23 18:50:41.420000,08:42:53.760000
日と秒を無視して、時間と分だけで結果を変換するにはどうすればよいですか。
Pandasタイムスタンプの差は、datetime.timedeltaオブジェクトを返します。これは、次のように* as_type *メソッドを使用して簡単に時間に変換できます。
import pandas
df = pandas.DataFrame(columns=['to','fr','ans'])
df.to = [pandas.Timestamp('2014-01-24 13:03:12.050000'), pandas.Timestamp('2014-01-27 11:57:18.240000'), pandas.Timestamp('2014-01-23 10:07:47.660000')]
df.fr = [pandas.Timestamp('2014-01-26 23:41:21.870000'), pandas.Timestamp('2014-01-27 15:38:22.540000'), pandas.Timestamp('2014-01-23 18:50:41.420000')]
(df.fr-df.to).astype('timedelta64[h]')
得た、
0 58
1 3
2 8
dtype: float64
上記の.astype()
ソリューションが役に立たなかったので、これは私を怒らせました。しかし、私は別の方法を見つけました。タイミングを決めていませんが、他の人にとってはうまくいくかもしれません:
t1 = pd.to_datetime('1/1/2015 01:00')
t2 = pd.to_datetime('1/1/2015 03:30')
print pd.Timedelta(t2 - t1).seconds / 3600.0
...何時間も必要な場合。または:
print pd.Timedelta(t2 - t1).seconds / 60.0
...分が必要な場合。