UnboundLocalError:局部变量' df'在分配之前引用

时间:2014-03-31 14:48:26

标签: python pandas

我想我已将df声明为pandas.DataFrame()

为什么代码会引发UnboundLocalError

import pandas as pd
import statsmodels.api as sm
import numpy as np
from math import log

def half_life(x):
    df = pd.DataFrame()
    df['Close'] = x
    df['ylag'] = df['Close'].shift(1)
    df['deltaY'] = df['Close'] - df['ylag']
    df = df[1:]
    A = np.vstack([df['ylag'], np.ones(len(df['ylag']))]).T
    results = sm.OLS(df['deltaY'], A).fit()
    halflife = -log(2)/results.params[0]
    return halflife

请帮忙!

1 个答案:

答案 0 :(得分:0)

DataFrame

  

DataFrame是一个二维标记数据结构,其列为   可能不同的类型。您可以将其视为电子表格或   SQL表,或Series对象的字典。它通常是最多的   常用的熊猫对象。与Series一样,DataFrame接受很多   不同种类的投入:

     

1D ndarray,list,dicts或Series的词典   二维numpy.ndarray
  结构化或记录ndarray
  系列另一个DataFrame

     

除数据外,您还可以选择传递索引(行标签)和   列(列标签)参数。如果您传递索引和/或   列,您保证索引和/或列   结果DataFrame。因此,系列的字典加上特定的索引   丢弃与传递的索引不匹配的所有数据。

     

如果未传递轴标签,则将从输入构造它们   基于常识规则的数据。

请注意,您正在尝试不带参数调用数据框。根据手册,您必须具有数据结构并使用特定类型的数据结构参数调用DataFrame以获取特定类型的结果。查看我指向的手册中的示例,了解如何设置pd.DataFrame(d)并打印df.type(),df以查看实际拥有的内容。