【发布时间】:2018-02-17 18:08:42
【问题描述】:
我有一个大致结构如下的数据框:
+-------------------------+-------------------------+--------+
| timestamp | adj_timestamp | values |
+-------------------------+-------------------------+--------+
| 2017-05-31 15:30:48.000 | 2017-05-31 11:30:00.000 | 0 |
+-------------------------+-------------------------+--------+
| 2017-05-31 15:31:45.000 | 2017-05-31 11:30:00.000 | 0 |
+-------------------------+-------------------------+--------+
| 2017-05-31 15:32:49.000 | 2017-05-31 11:30:00.000 | 0 |
...
我正在尝试使用time 包将转换函数应用于两个时间列,以将它们转换为整数表示。我的用户定义函数以及它如何应用于上面的数据框:
def timeConverter(timestamp):
time_tuple = time.strptime(timestamp, "%Y-%m-%d %H:%M:%S.000")
timevalue = time.mktime(time_tuple)
return timevalue
def convertDateColumn(Data):
timeUDF = udf(timeConverter,FloatType())
finalData = Data.withColumn('adj_timestamp', timeUDF('adj_timestamp'))
return finalData
例如,adj_timestamp 列中的第一个条目变为:
1496244608
通过datetime.fromtimestamp 将其转换回:2017-05-31 15:30:08
这与我一开始的价值不同...很好奇发生了什么!
编辑:由于我的行数远多于所示的 3 行,是否有可能异步处理数据,因此生成的数据帧与输入的顺序不同?
【问题讨论】:
标签: python datetime dataframe pyspark bigdata