如何将时间戳日期转换为整数值
Posted
技术标签:
【中文标题】如何将时间戳日期转换为整数值【英文标题】:How to convert Timestamp Dates into Integer Values 【发布时间】:2021-11-22 23:42:02 【问题描述】:我有以下设置:
我想将来自 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'
我在这里错过了什么?
非常感谢, 本杰明
【问题讨论】:
不要使用循环来填充 x_data 和 y_data。你可以做x_data = df.index
和y_data = df['Close']
。你的数据框的索引是什么类型的?根据该类型,您有不同的可能性将日期更改为数字
好的,谢谢,这似乎已经是一种改进。但是我需要将时间戳转换为整数;)
【参考方案1】:
您可以尝试使用 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
将日期时间对象转换为您可以使用int()
的字符串。
如果您的索引中有字符串,您可以使用 datetime.strptime
将它们转换为 datetime 对象,然后您可以使用这些对象来获取上述 Unix 时间戳。
obj = datetime.datetime.strptime("2020-11-01", "%Y-%m-%d")
obj.timestamp() # now available
【讨论】:
好的,我明白了,但是在我的示例中,“现在”变量应该是什么?我该如何应用你的步骤? 哦,出于某种原因,我认为您的索引中有日期时间对象。如果您有字符串,您可以使用datetime.strptime
将您拥有的字符串日期转换为日期时间对象,那么它们将与我的示例中的now
类型相同。以上是关于如何将时间戳日期转换为整数值的主要内容,如果未能解决你的问题,请参考以下文章