首页 > 解决方案 > 试图从雅虎 API 返回的数据框中获取日期

问题描述

我有一个程序可以从雅虎获取所有比特币价格历史。然后它循环datafram并生成一个dataframe与我的代码使用的匹配的新的。

问题是当我尝试获取它崩溃的日期时,我假设问题是日期行是索引。我在堆栈溢出中看到了一些代码,它将通过匹配相应行中的值来获取索引。但两行可以具有相同的值。例如,可能有 2 个日期具有相同的价格和数量。编码:

import pandas as pd
import sys
from pandas_datareader import data
import test as udate

df = pd.DataFrame(columns=['Price', 'Time', 'open','close','smallest','biggest','bvol','svol','isvalid' , 'sell1','vol1','id1' , 'sell2','vol2','id2' , 'sell3','vol3','id3' ,'dummy1','dummy2','dummy3'])

print(df)
print("finished")


from datetime import date
from datetime import datetime, timedelta

def getMilli(date1):
    datetimeFormat = '%Y-%m-%d'
    today=datetime.strptime(date1, datetimeFormat)
    return udate.unix_time_millis(today)



today = date.today()
current_date = datetime.today()
new_date = current_date - timedelta(days=52)

d1 = today.strftime("%Y-%m-%d")
print("d1 =", d1)
d2 = new_date.strftime("%Y-%m-%d")
print("d2 =", d2)

start_date = '2015-01-01'
end_date = '2015-02-01'


df_from=data.DataReader('BTC-USD', 'yahoo', d2, d1);

df_from.to_csv("yahoostockdata.csv")
size=df_from.count

for index, row in df_from.iterrows():
print(row)
price=row["Close"]
open=row["Open"]
close=row["Close"]
smallest=row["Low"]
biggest=row["High"]
bvol=row["Volume"]
svol=0
isvalid=1

###############################################################
# THIS LINE CAUSES THE EXCEPTION TRYING TO READ FROM THE INDEX   
date=row["Date"]

smallest, biggest, bvol, svol
s={'Price' : price ,'Time' : time ,'open' : open, 'close' : close, 'smallest': smallest, 'biggest': biggest, 'bvol' : bvol, 'svol': svol, 'isvalid' : 1, 'sell1' : 0,'vol1' :0,'id1':0, 'sell2' : 0,'vol2' :0,'id2':0 , 'sell3' : 0,'vol3' :0,'id3':0 ,'dummy1' : 0,'dummy2' : 0,'dummy3' :0 }

df=df.append( s,  ignore_index=True)
pes=pes+1

标签: python

解决方案


推荐阅读