以下のコードを使用して、Google Finance からデータを取得しています。タイムスタンプは POSIX 形式であるため、データ時間に変換されます。時間基準(14:35:00)に基づいてフィルタリングしようとすると、空のテーブルが返されます。POSIX/日時変換に関係していると思われますが、解決方法がわかりません。
def get_intraday_data(symbol, interval_seconds=301, num_days=10):
# Specify URL string based on function inputs.
url_string = 'http://www.google.com/finance/getprices?q={0}'.format(symbol.upper())
url_string += "&i={0}&p={1}d&f=d,o,h,l,c,v".format(interval_seconds,num_days)
# Request the text, and split by each line
r = requests.get(url_string).text.split()
# Split each line by a comma, starting at the 8th line
r = [line.split(',') for line in r[7:]]
# Save data in Pandas DataFrame
df = pd.DataFrame(r, columns=['Datetime','Close','High','Low','Open','Volume'])
# Convert UNIX to Datetime format
df['Datetime'] = df['Datetime'].apply(lambda x: datetime.datetime.fromtimestamp(int(x[1:])))
#Seperate Date and Time
df['Time'],df['Date']= df['Datetime'].apply(lambda x:x.time()), df['Datetime'].apply(lambda x:x.date())
#Convert 'Close','High','Low','Open', deleting 'Volume'
''''df['Close'] = df['Close'].astype('float64')
df['High'] = df['High'].astype('float64')
df['Low'] = df['Low'].astype('float64')
df['Open'] = df['Open'].astype('float64')'''
del df['Volume']
del df['Datetime']
df[['Close','High','Low','Open']] = df[['Close','High','Low','Open']].astype('float64')
# Calculating %Change and Range
df['%pct'] = (df['Close'] - df['Open'])/df['Open']
df['Range'] = df['High'] - df['Low']
#Sort Columns
return df
この機能の結果をNASとして保存しました
NAS = get_intraday_data('IXIC', interval_seconds=301, num_days= 100)
フィルター基準は次のとおりです。
NAS[NAS['Time'] == '14:35:00']
これについての支援に感謝します。