我想我已将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
请帮忙!
答案 0 :(得分:0)
DataFrame是一个二维标记数据结构,其列为 可能不同的类型。您可以将其视为电子表格或 SQL表,或Series对象的字典。它通常是最多的 常用的熊猫对象。与Series一样,DataFrame接受很多 不同种类的投入:
1D ndarray,list,dicts或Series的词典 二维numpy.ndarray
结构化或记录ndarray
系列另一个DataFrame除数据外,您还可以选择传递索引(行标签)和 列(列标签)参数。如果您传递索引和/或 列,您保证索引和/或列 结果DataFrame。因此,系列的字典加上特定的索引 丢弃与传递的索引不匹配的所有数据。
如果未传递轴标签,则将从输入构造它们 基于常识规则的数据。
请注意,您正在尝试不带参数调用数据框。根据手册,您必须具有数据结构并使用特定类型的数据结构参数调用DataFrame以获取特定类型的结果。查看我指向的手册中的示例,了解如何设置pd.DataFrame(d)并打印df.type(),df以查看实际拥有的内容。