在Python中将函数的结果存储到可检索的DataFrame中[重复]
Posted
技术标签:
【中文标题】在Python中将函数的结果存储到可检索的DataFrame中[重复]【英文标题】:Storing the results from a function into a retrievable DataFrame in Python [duplicate] 【发布时间】:2017-02-16 16:58:28 【问题描述】:我是 python 新手,刚刚阅读了几本关于数据分析/机器学习的书籍和教程。
我想建立一个分类器并尝试抓取实时股票数据。
以下函数拉取实时数据
from googlefinance import getQuotes
import json
import pandas as pd
import datetime
import requests
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=1d&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:])))
return df
当我尝试调用 df 时,出现以下错误:
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-40-db884686c2f6> in <module>()
18 return df
19
---> 20 symbol = pd.DataFrame(df)
NameError: name 'df' is not defined
问题是我希望能够将其存储到单独的日期框架中并稍后调用它。该函数似乎运行并且没有将其存储在任何地方。我会很感激这方面的指导。
【问题讨论】:
我试过这个。没有解决我的问题,因为在添加了将结果存储在 HDFS @user2539738 中的过程后,我仍然收到错误消息说 df 不是定义的函数 【参考方案1】:我对计算机科学术语不够熟悉,无法向您彻底解释这一点,但基本上,当您调用具有返回值的函数时,该值必须保存为变量。
df 仅存在于您的函数中。 (我认为这称为范围)。当你离开函数时,df 消失了
你在做
get_intraday_data(symbol, 301,10)
所以,在该函数运行后,返回的变量就消失了
相反,请执行以下操作:
df = get_intraday_data(symbol, 301,10)
然后你就可以用它做事了
或者,您可以腌制它,而不是返回 df。在您的“get_intraday_symbol”中
fname = 'file1.P'
df.to_pickle(fname)
return fname
然后,后续代码必须读取腌制数据帧
fname = get_intraday_data(symbol, 301,10)
df = pd.read_pickle(fname)
【讨论】:
像魅力一样工作!!!谢谢!!以上是关于在Python中将函数的结果存储到可检索的DataFrame中[重复]的主要内容,如果未能解决你的问题,请参考以下文章