我目前对Python有一个问题。我有一个熊猫数据框,其中一列是带有日期的字符串。 格式为:
"%Y-%m-%d %H:%m:00.000". For example : "2011-04-24 01:30:00.000"
我需要将整个列转换为整数。我试图运行这段代码,但速度非常慢,我有几百万行
for i in range(calls.shape[0]):
calls['dateint'][i] = int(time.mktime(time.strptime(calls.DATE[i], "%Y-%m-%d %H:%M:00.000")))
你们知道怎么把整列转换成大纪元时间吗
提前谢谢
使用
to_datetime
将字符串转换为datetime
,然后减去日期时间1970-1-1并调用dt.total_seconds()
:您可以看到,将此值转换回的时间相同:
因此,您可以添加新列或覆盖:
编辑
@Jeff建议的更好的方法:
您还可以看到,它的速度要快得多
从处理时间序列数据的Pandas documentation开始:
这将给出以毫秒为单位的历元时间
我知道这很古老,但我相信正确的(最干净的)方法是下面的一行:
这假定
calls['DATE']
是datetime64[ns]
类型。如果不是,请将其转换为:解释
要获取
pd.Timestamp
的历元值(以秒为单位),请使用:这应该给你
1577836800.0
。如果需要,可以将其转换为int
。它之所以是浮点,是因为任何亚秒时间都将是小数部分为完整起见,您还可以使用以下方法获取原始历元值(以纳秒为单位):
给出15778368000000000,即上述日期的纪元。
.value
属性是自epoch以来的纳秒数,所以我们除以1e6得到毫秒。如果希望第一次调用以秒为单位,则除以1e9相关问题 更多 >
编程相关推荐