如何将时间戳日期转换为整数值

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.indexy_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 类型相同。

以上是关于如何将时间戳日期转换为整数值的主要内容,如果未能解决你的问题,请参考以下文章

时间戳如何储存数据

将时间戳转化为日期格式

如何在Oracle中将时间戳转化为日期格式

后台日期时间是10位,前端13位怎么转化成10位再提交给后台

如何将时间戳转换为日期时间?

ThinkPHP 如何把获取到的日期格式的时间转化为时间戳