总结Python中的持续时间

时间:2017-11-09 21:12:46

标签: python pandas

我有以下数据框: 比特币销售和购买价格,日期是OLE格式。

Date            Sell        Buy
43031.57567     5720.65     5770.65
43031.57564     5720.65     5770.65
43031.57561     5720.65     5770.65
43031.57558     5720.65     5770.65
43031.57555     5720.65     5770.65
43031.57552     5720.65     5770.65
43031.57549     5720.65     5770.65
43031.57546     5720.65     5770.65
43031.57544     5720.65     5770.65
43031.57541     5720.65     5770.65
43031.57537     5718        5768
43031.57534     5718        5768
43031.57531     5718        5768
43031.57528     5718        5768
43031.57524     5718        5768
43031.57522     5718        5768
43031.57519     5718.45     5768.45
43031.57516     5718.45     5768.45
43031.57512     5718.45     5768.45
43031.57509     5717.55     5767.55
43031.57506     5717.55     5767.55
43031.57504     5716.65     5766.65
4.3031.57501    5716.65     5766.65

我想分析一下平均花费时间来克服"特定点差(例如买入卖出或卖出买入),例如,差价= 20。 我使用以下代码:

import pandas as pd
import csv
import datetime as dt

OLE_TIME_ZERO = dt.datetime(1899, 12, 30, 0, 0, 0)
def ole(oledt):
    return OLE_TIME_ZERO + dt.timedelta(days=float(oledt))

spread = 20
counter = 0 
time = 0

df = pd.read_csv("C:/P/testing33.csv")

for index, row in df.iterrows():
    a = index + 1
    df_slice = df[a::]
    for index1, row1 in df_slice.iterrows():
        if row["Buy"] - row1["Sell"] > spread:
            time = time + ole(row["Date"]) - ole(row1["Date"]) 
            counter += 1
            break
    for index2, row2 in df_slice.iterrows():    
        if row["Sell"] - row2["Buy"] > spread:
            time = time + ole(row["Date"]) - ole(row2["Date"])
            counter += 1
            break

avg_time = time/counter

它背后的逻辑是停止" for"第一次循环,卖出和买入之间的差异大于20。 我收到以下错误:

time = time + ole(row["Date"])- ole(row1["Date"])
TypeError: unsupported operand type(s) for +: 'int' and 'datetime.datetime'

你能帮助理解我做错了吗?

0 个答案:

没有答案