私はPythonでコーディングするのがかなり新しく、このサイトで利用できる素晴らしいリソースのおかげで、これまでのところほとんどの問題を解決することができました。datetimeとdatetimeの範囲を比較する
複数の.csvファイルを取り込み、各初期ファイルのデータをさまざまな種類のログファイルに分割し、これらのさまざまな種類のログを独自の.csvに書き込みます。
私はファイルAをロールスルーする必要があります。そして、各行に対して、同じ日時のためにdatetimeとsearchファイルBを取得し、関連データを初期データとともに新しい列にコピーします。これは、A == B forループの場合にはうまく簡単です...これらのログは、時間の経過とともにリアルタイムクロックが変動する別のコンピュータによって書き込まれます。 私が実際に望むのは、ファイルAから時間をとり、ファイルB +/- 30秒で対応する時間を検索することです。これは、私が立ち往生している場所で、最後の3/4時間、円で周りを囲んでいます!
現在、私は以下のコードの抽出を実行したとき、私は、次を得る:
---> 35(タイムコード - マージン)の場合< = datetime.datetime.date(ssptime)< =(タイムコード+マージン):
TypeError例外:事前にdatetime.date
おかげへのdatetime.datetimeを比較することはできません!
import matplotlib.pyplot as plt # external function need from inside Canopy
import os # external functions
import re # external functions
import matplotlib.patches as mpatches
import csv
import pandas as pd
import datetime
addrbase = "23"
csvnum = [1,2,3,4,5] # CSV number
csvnum2 = [1,2,3,4,5]
senstyp = ['BSL'] #Sensor Type
Beacons = 5
outfile = open('C:\Users\xxx\Canopy\2303_AVG2.csv', 'w') #File to write to
outcsv = csv.writer(outfile, lineterminator='\n')
with open('C:\Users\xxx\Canopy\2303_AVG.csv', 'r') as f: #File read vairable f
csvread = csv.reader(f, delimiter=',') #Stores the data from file location f in csvread using the delimiter of','
for row in csvread: #sets up a for loop using the data in csvread
timecode = datetime.datetime.strptime(row[1],'%Y/%m/%d %H:%M:%S')#BSL time to datetime.datetime
margin = datetime.timedelta(seconds = 30)
with open('C:\Users\xxx\Canopy\2301_SSP_AVG.csv', 'r') as f: #File read vairable f
csvreadssp = csv.reader(f, delimiter=',')
for line in csvreadssp:
ssptime = datetime.datetime.strptime(row[2],'%Y/%m/%d %H:%M:%S')#
print ssptime
if (timecode - margin) <= datetime.datetime.date(ssptime) <= (timecode + margin):
relssp = line[6]
print "Time: " + str(timecode) + " SSP: " + str(relssp)
#try:
row.append(relssp) #Calculates the one way travel time of the range and adds a new column with the data
outcsv.writerow(row) # Writes file
#except ValueError: #handles errors from header files
# row.append(0) #handles errors from header files
outfile.flush()
outfile.close()
print "done"
はい。 Date/datetimeを表すとき、日付、時刻、datetime、timedelta、tzinfoの各クラスがあります。同じクラスに対してのみ比較操作を行うことができます。そうでなければ、TypeErrorが発生します。 Pythonの日付タイプのドキュメントを参照してください。https://docs.python.org/2/library/datetime.html – rojeeer