1

次のようなデータを含む csv ファイルがあります (以下を参照)。datetime を解析し、欠落している date_time を埋め、欠落しているデータを "M"(missing) として割り当てるのに助けが必要です:

Datetime, Data

19920101 00:00,2
19920101 01:00,3
19920101 23:00,5
19920505 12:00,5
4

1 に答える 1

1

完全な答えではありませんが、日時文字列を解析しようとしました

>>> 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)
于 2012-06-22T17:08:42.547 に答える