pyspark将某个数据类型的所有列转换为另一个

时间:2019-03-18 10:33:36

标签: python pyspark pyspark-sql

我有一个带有一定数量日期列的数据框。我想将它们全部转换为时间戳,而不必担心列的确切名称。因此,我想要的是以下内容:“将所有日期列都设置为时间戳,并保持相同的列名称”

我知道在一列中应该是:

df = df.withColumn('DATUM', df['DATUM'].cast('timestamp'))

2 个答案:

答案 0 :(得分:0)

您可以使用for循环,并强制转换为时间戳记

df.select(
    *[df[col_name].cast('timestamp') for col_name in df.columns]
)

答案 1 :(得分:0)

您可以使用循环来检测类型为date的时间,并仅在这些情况下执行强制转换。

for col in df.dtypes:
  if(col[1] == 'date'):
    df = df.withColumn(col[0],df[col[0]].cast('timestamp'))