python - 如何修改/转换数据框的列?

标签 python apache-spark pyspark apache-spark-sql

我有一个使用

创建的 pyspark.sql.dataframe.DataFrame 实例
dataframe = sqlContext.sql("select * from table").

一列是“到达日期”并包含一个字符串。

如何修改此列以便仅从中提取前 4 个字符并丢弃其余字符?

如何将此列的类型从字符串转换为日期?

在 graphlab.SFrame 中,这将是:

dataframe['column_name'] = dataframe['column_name'].apply(lambda x: x[:4] )

dataframe['column_name'] = dataframe['column_name'].str_to_datetime()

最佳答案

如 Orions 所述,您无法修改列,但可以覆盖它。此外,您不需要创建用户定义的函数,因为有一个用于提取子字符串的内置函数:

from pyspark.sql.functions import *
df = df.withColumn("arrival_date", df['arrival_date'].substr(0, 4))

要将其转换为日期,您可以使用 to_date,正如 Orions 所说:

from pyspark.sql.functions import *
df = df.withColumn("arrival_date", to_date(df['arrival_date'].substr(0, 4)))

但是,如果需要指定格式,则应使用unix_timestamp:

from pyspark.sql.functions import *
format = 'yyMM'
col = unix_timestamp(df['arrival_date'].substr(0, 4), format).cast('timestamp')
df = df.withColumn("arrival_date", col)

所有这些都可以在 pyspark documentation 中找到.

关于python - 如何修改/转换数据框的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39050248/

相关文章:

python - 如何获取嵌套字符串列表中最长字符串的长度?

python - 如何设置某些 Tkinter 小部件的边框颜色?

scala - Spark - 按输出 (RDD) 从组中删除 CompactBuffer

java - Spark-Cassandra Maven 项目,带有进行 scala-lib 调用的 java 源代码

scala - Spark:内存密集型联接操作的最佳实践

python - 时间序列不一致的pyspark滞后函数

apache-spark - pyspark - 将纪元时间转换为日期

python - 根据关键词提取句子的输出

python - numpy.concatenate 如何在列表上工作

python - Pyspark 从现有数组列创建一定长度的数组列