关于pandas:将函数的结果存储到Python中的可检索DataFrame中

Storing the results from a function into a retrievable DataFrame in Python

本问题已经有最佳答案,请猛点这里访问。

我是python的新手,刚学过几本关于数据分析/机器学习的书籍和教程。

我想建立一个分类,并试图刮取实时股票数据。

以下功能可以提取实时数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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={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:])))

    return df

当我尝试调用df时,我收到以下错误:

1
2
3
4
5
6
7
8
---------------------------------------------------------------------------
    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

问题是我希望能够将其存储到单独的日期框架中并稍后调用它。 该功能似乎运行而不是存储在任何地方。 我将很感激这方面的指导。


我对计算机科学术语不够熟悉,无法向您详细解释这一点,但基本上,当您调用具有返回值的函数时,该值必须保存为变量。

df仅存在于您的函数中。 (我认为这称为范围)。 当你离开这个功能时,df就消失了

你在做

1
get_intraday_data(symbol, 301,10)

因此,在运行该函数之后,返回的变量就消失了

相反,请执行以下操作:

1
df = get_intraday_data(symbol, 301,10)

然后你就可以用它做点什么了

或者,您可以腌制它而不是返回df。 在你的"get_intraday_symbol"中

1
2
3
fname = 'file1.P'
df.to_pickle(fname)
return fname

然后,后续代码必须读取pickle数据帧

1
2
fname = get_intraday_data(symbol, 301,10)
df = pd.read_pickle(fname)