如何解决如何修复实木复合地板文件的python熊猫中的时间戳解释
我有一些带有时间戳的spark(scala)数据帧/表,这些数据帧/表来自我们的DHW,并且有时使用一些高水印。
我想在python中使用pandas处理此数据,因此我将它们作为来自spark的镶木地板文件写入,并再次使用pandas读取。
问题是熊猫/小鸟无法处理时间戳。它们被转换为dateTime64[ns]
,女巫的日期范围有限。因此某些时间戳记(尤其是所有高水位标记)输入错误。
例如,如何强制熊猫将时间戳解释为dateTime[mu]
。还是将高(低)水印设置为NAN而不是仅使用错误的转换值?
这是最小的代码示例:
火花:
import org.apache.spark.sql.functions._
import org.apache.spark.sql.types._
val df_spark = Seq(
(1,"1050-01-01 23:00:01"),(2,"2014-11-30 12:40:32"),(3,"2016-12-29 09:54:00"),(4,"2500-01-01 00:00:00")).toDF("id","date-string")
.withColumn("valid_to",to_timestamp(col("date-string")))
df_spark.repartition(1).write.parquet("timestamptest")
df_spark.show
+---+-------------------+-------------------+
| id| date-string| valid_to|
+---+-------------------+-------------------+
| 1|1050-01-01 23:00:01|1050-01-01 23:00:01|
| 2|2014-11-30 12:40:32|2014-11-30 12:40:32|
| 3|2016-12-29 09:54:00|2016-12-29 09:54:00|
| 4|2500-01-01 00:00:00|2500-01-01 00:00:00|
+---+-------------------+-------------------+
在Python中读取 时:
import pandas as pd
df_pandas= pd.read_parquet("timestamptest")
df_pandas.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries,0 to 3
Data columns (total 3 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 id 4 non-null int32
1 date-string 4 non-null object
2 valid_to 4 non-null datetime64[ns]
dtypes: datetime64[ns](1),int32(1),object(1)
memory usage: 208.0+ bytes
df_pandas
id date-string valid_to
0 1 1050-01-01 23:00:01 2219-02-16 22:09:08.419103232
1 2 2014-11-30 12:40:32 2014-11-30 12:40:32.000000000
2 3 2016-12-29 09:54:00 2016-12-29 09:54:00.000000000
3 4 2500-01-01 00:00:00 1915-06-14 00:25:26.290448384
您现在看到第一个和最后一个时间戳是错误的。 如果我再次用火花阅读parqeut,一切都很好。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。