如何使用pyspark来修改一列的所有行?

0 人关注

我有一个pyspark数据框架,有很多列。我打算将一个短语串联到每一行的一个列中。比如说。

         "date"                  "other columns"
2022-01-11 19:51:37+00:00              ...
2022-01-11 20:51:55+00:00              ...

我将修改 "date "的所有行,删去小时旁边的内容,并添加 "00:00+00:00"。 因此,文本将变成。

         "date"                  "other columns"
2022-01-11 19:00:00+00:00              ...
2022-01-11 20:00:00+00:00              ...
    
8 个评论
Emma
我不确定 "将一个短语连接到一列的每一行 "的部分,但至少对于规范化的日期,你可以使用 df.withColumn('date', F.date_trunc('hour', df.date))
不要工作,因为它是一个字符串类型
Emma
它也适用于String列,但如果spark没有自动转换,你可以在传递给 date_trunc ,如 df.date.cast(TimestampType())
date_time='2021-08-01 00:00:17+00:00'转化为date_time=datetime.datetime(2021, 8, 1, 2, 0)。但是小时应该是0,而在转换中是2。
Emma
这是由时区配置造成的。 如果你没有在spark配置中设置时区,它会自动转换为你的本地时区。 为了防止这种情况,我会使用 .config('spark.sql.session.timeZone', 'UTC') 或截断时区信息部分。
谢谢你,它的工作!
请不要在你的标题中加入SOLVED。你已经接受了一个答案,这就足以让其他用户知道你的问题已经解决了。
完美,对不起。
python
pandas
dataframe
apache-spark
pyspark
domenico
domenico
发布于 2022-01-28
1 个回答
BrendanA
BrendanA
发布于 2022-01-28
已采纳
0 人赞同

鉴于它们是字符串,你可以用以下方法来做