我有以下设置:
我想将yfinance Dataframe中的数据存储在两个表示X和Y值的列表中。这可以通过以下几行来实现:
import yfinance as yf
import matplotlib.pyplot as plt
stock = 'TSLA'
start = '2020-11-01'
df = yf.download(stock , start=start)
nfx = []
nfy = []
for index, row in df.iterrows():
x_data = nfx.append(index)
y_data = nfy.append(row['Close'])
现在我想把这些X和Y值输入Polyfit函数。要做到这一点,我需要以某种方式将它们作为整数。
我怎样才能实现这个想法?当我尝试以下方法时:
for index, row in df.iterrows():
x_data = nfx.append(np.asarray(index).astype(float))
y_data = nfy.append(row['Close'])
,我得到了错误信息:
TypeError: float() argument must be a string or a number, not 'Timestamp'
我在这里错过了什么?
非常感谢。本杰明
您可以尝试使用Unix时间戳。
import datetime
now = datetime.datetime.utcnow() # now is a datetime object
print(now.timestamp()) # seconds since Unix epoch, it's a float however
1633081223.677152
print(int(now.timestamp())) # seconds have been converted to integers
1633081223
或者您可以使用datetime.strftime
将datetime对象转换为可以使用int()
的字符串。
如果你有字符串索引,您可以使用datetime.strptime
将它们转换为datetime对象,然后,您可以使用Unix时间戳像上面。
obj = datetime.datetime.strptime("2020-11-01", "%Y-%m-%d")
obj.timestamp() # now available