可执行的Python代码 - 重复的空输出

时间:2016-03-02 07:00:17

标签: python csv error-handling

我对编码世界相对较新,试图做一些略微超越我的事情。 来到代码,我试图运行有两个部分。第一部分是 -

import datetime
import time
import pandas as pd
import numpy as np
d1 = datetime.datetime.strptime('01/01/2016 11:59:57 AM','%m/%d/%Y %I:%M:%S %p')
d2 = datetime.datetime.strptime('01/31/2016 11:59:53 PM','%m/%d/%Y %I:%M:%S %p')
odtd = datetime.timedelta(seconds=05)
a = []

def tint():
    x = d1
    while  x < d2:
        x = x + odtd
        a.append(x.strftime('%m/%d/%Y %I:%M:%S %p'))
    return a

a= tint()
df3 = np.asarray(a)
np.savetxt("Check2.csv",df3,delimiter = ",", fmt = "%s", header = "Date Format")

上面的代码创建了一个.csv文件,该文件从开始日期到结束日期(d1,d2)每隔5秒对列的行条目编制索引。您可以将此文件保存在工作目录中并检查输出。

现在,代码的第二部分使用.csv文件(从另一个名为UCA1的源获得),该文件具有索引列(%Y-%m-%dT%H:%M:%S)格式和随机值在它的第二列。试图从&#34; Check2.csv&#34;运行查找。到&#34; UCA1 Ticks&#34;并存储在&#34; Check2.csv&#34;中的一列中,我写下面的代码 -

#2nd Part
df1 = pd.read_csv("UCA1 Ticks.csv")
pd.read_csv("UCA1 Ticks.csv",names = ['UCA1 Curncy','Bid/Ask','Value'], parse_dates= ["UCA1 Curncy"])
df3 = pd.read_csv("Check1.csv")
pd.read_csv("Check2.csv")
u = list()
v = list()
w = list()
z = list()
t1 = datetime.timedelta(seconds=01)
len1 = len(df1.index)
len3 = len(df3.index)
r1 = df3.ix[:,0].tolist()
f1 = df1.ix[:,0].tolist()
f2 = df1.ix[:,0].tolist()

def main(z):
    i = 1
    global u
    while i <= len3:
        j = 1
        while j <= len1:
            if time.strptime(r1[i],'%m/%d/%Y %I:%M:%S %p').tm_year == time.strptime(f1[j],'%m/%d/%Y %I:%M:%S %p').tm_year and time.strptime(r1[i],'%m/%d/%Y %I:%M:%S %p').tm_mon == time.strptime(f1[j],'%m/%d/%Y %I:%M:%S %p').tm_mon and time.strptime(r1[i],'%m/%d/%Y %I:%M:%S %p').tm_mday == time.strptime(f1[j],'%m/%d/%Y %I:%M:%S %p').tm_mday and time.strptime(r1[i],'%m/%d/%Y %I:%M:%S %p').tm_hour == time.strptime(f1[j],'%m/%d/%Y %I:%M:%S %p').tm_hour and time.strptime(r1[i],'%m/%d/%Y %I:%M:%S %p').tm_min == time.strptime(f1[j],'%m/%d/%Y %I:%M:%S %p').tm_min and time.strptime(r1[i],'%m/%d/%Y %I:%M:%S %p').tm_sec == time.strptime(f1[j],'%m/%d/%Y %I:%M:%S %p').tm_sec :
                u.append(f2[j])
        #Above if statement compares year, month, day, hour, min, sec and AM/PM
            j = j +1
        for k in u:
            v.append(k)
            w = pd.DataFrame({'v'})
            z.append(w[w.v>0].sum()/w[w.v>0].count())                
        i = i + 1
    return z

所以来自&#34; UCA1 Ticks&#34;的代码值的第二部分的最终输出在#34; Check2.csv&#34;的第二列文件。当我运行这段代码(正在运行,你可以检查出来)我得到列表z的空输出。想知道为什么总会发生这种情况吗?我再次检查了我的缩进和代码,但似乎无法弄明白。请帮忙。

PS - &#34; UCA1 Ticks.csv&#34;中可能有多个条目。因此添加了一个for循环,取所有值之间的平均值。

0 个答案:

没有答案