我正在使用下面的代码从 Google 财经中提取数据。时间戳是 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']
我将不胜感激这方面的帮助。