スポンサーリンク

Pandasで2つの日付の経過日数を取得

datefimeオブジェクトの差分からtimedeltaオブジェクトを生成

datefimeオブジェクトの差分からtimedeltaオブジェクトが生成できます。
timedeltaオブジェクトのdays属性を指定することで、経過日数が取得できます。

下記がサンプルコードになります。

 $ cat sample.py 
#!/usr/bin/env python3
# coding: UTF-8

import datetime

DATE01 = datetime.datetime(2010, 1, 3)
DATE02 = datetime.datetime(2012, 5, 12)

DATE_DIFF = DATE02 - DATE01
print(DATE_DIFF.days , "日経過")

下記が実行結果になります。
 $ ./sample.py 
860 日経過

スポンサーリンク

PandasのDataFrameで日付の差分から経過日数を取得

例えば、下記のin.txtがあったとします。

 $ cat in.txt 
20120101,0
20120102,1
20120203,2
20120204,3
20120305,-4
20130306,5
20130407,6
20130508,7
20140509,-8
20140510,9

2列目の値が負の場合、1列目の日付からの経過日数を求めます。
下記がサンプルコードになります。
 $ cat sample.py 
#!/usr/bin/env python3
# coding: UTF-8

import pandas as pd

DF = pd.read_csv('in.txt',
				names=('Date', 'Value'),
				index_col='Date',
				parse_dates=True)

count = 0
for index, row in DF.iterrows():
	if count == 0:
		index1st = index
		count += 1

	if row['Value'] < 0:
		dateDiff = index - index1st
		print("Value=" , row['Value'] , "経過日数" , dateDiff.days)

下記が実行結果になります。
 $ ./sample.py
Value= -4 経過日数 64
Value= -8 経過日数 859

スポンサーリンク