我有一个pandas DataSeries,其中包含日期格式的字符串格式:
2016-01-14 11:39:54
我想将字符串转换为时间戳。
我正在apply尝试尝试将'datetime.strptime'传递给系列的每个元素的方法
date_series = date_string.apply(datetime.strptime, args=('%Y-%m-%d %H:%M:%S'))
运行代码时,出现以下错误:
strptime() takes exactly 2 arguments (18 given)
我的问题是(1)我是否采用正确的方法,(2)为什么strptime将我的args转换为18个参数?
我试图获得两个时间戳列之间的差异,但毫秒数消失了。
如何纠正这个?
from pyspark.sql.functions import unix_timestamp
timeFmt = "yyyy-MM-dd' 'HH:mm:ss.SSS"
data = [
(1, '2018-07-25 17:15:06.39','2018-07-25 17:15:06.377'),
(2,'2018-07-25 11:12:49.317','2018-07-25 11:12:48.883')
]
df = spark.createDataFrame(data, ['ID', 'max_ts','min_ts']).withColumn('diff',F.unix_timestamp('max_ts', format=timeFmt) - F.unix_timestamp('min_ts', format=timeFmt))
df.show(truncate = False)
Run Code Online (Sandbox Code Playgroud)