次のようなデータを含む csv ファイルがあります (以下を参照)。datetime を解析し、欠落している date_time を埋め、欠落しているデータを "M"(missing) として割り当てるのに助けが必要です:
Datetime, Data
19920101 00:00,2
19920101 01:00,3
19920101 23:00,5
19920505 12:00,5
次のようなデータを含む csv ファイルがあります (以下を参照)。datetime を解析し、欠落している date_time を埋め、欠落しているデータを "M"(missing) として割り当てるのに助けが必要です:
Datetime, Data
19920101 00:00,2
19920101 01:00,3
19920101 23:00,5
19920505 12:00,5
完全な答えではありませんが、日時文字列を解析しようとしました
>>> s="19920101 00:00"
>>> format = "%Y%m%d %H:%M"
>>> d = datetime.datetime.strptime(s, format)
>>> print d
1992-01-01 00:00:00
これは、欠落している日付と時刻を見つけるのに役立ちますか.
文字列 の 3 が何なのか理解できませんでした3 19920101 23:00
。
[編集:あなたのコメントに基づいて]
>>> expected = d + datetime.timedelta(days=1)
>>> print expected
1992-01-02 00:00:00
したがって、コードでは、次のようなことを試すことができます (これを作業して改良する必要があります)。
[編集: コードの置き換え]
import csv
import sys
import datetime
import pprint
all_data_points = {}
all_dates = []
expected = ''
format = "%Y%m%d %H:%M"
with open('datafile', 'rt') as f:
reader = csv.reader(f)
for row in reader:
if row and 'Datetime' not in row:
day_str = row[0]
rain_str = row[1]
if not expected:
all_data_points[day_str] = rain_str
all_dates.append(day_str)
d = datetime.datetime.strptime(day_str, format)
expected = d + datetime.timedelta(days=1)
else:
d = datetime.datetime.strptime(day_str, format)
gap_in_days = d - expected
start_day = expected
if gap_in_days.days > 1:
for i in xrange(gap_in_days.days):
next_day = start_day + datetime.timedelta(days=1+i)
day_str = next_day.strftime(format)
all_data_points[day_str] = 'M'
all_dates.append(day_str)
all_data_points[day_str] = rain_str
expected = d
pprint.pprint(all_data_points)