Skip to main content
 首页 » 编程设计

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

2025年05月04日10langtianya

我有一个使用

创建的 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 中找到.