我有以下数据框:
corr_temp_df
[('vacationdate', 'date'),
('valueE', 'string'),
('valueD', 'string'),
('valueC', 'string'),
('valueB', 'string'),
('valueA', 'string')]
现在,我想将Vacationdate列的数据类型更改为String,以便数据框也采用这种新类型并覆盖所有条目的数据类型数据。例如写后:
corr_temp_df.dtypes
Vacationdate的数据类型应被覆盖。
我已经使用过诸如cast,StringType或astype之类的函数,但是我没有成功。你知道怎么做吗?
让我们创建一些虚拟数据:
import datetime
from pyspark.sql import Row
from pyspark.sql.functions import col
row = Row("vacationdate")
df = sc.parallelize([
row(datetime.date(2015, 10, 07)),
row(datetime.date(1971, 01, 01))
]).toDF()
如果Spark> = 1.5.0,则可以使用以下date_format
功能:
from pyspark.sql.functions import date_format
(df
.select(date_format(col("vacationdate"), "dd-MM-YYYY")
.alias("date_string"))
.show())
在Spark <1.5.0中,可以使用Hive UDF完成:
df.registerTempTable("df")
sqlContext.sql(
"SELECT date_format(vacationdate, 'dd-MM-YYYY') AS date_string FROM df")
当然,在Spark> = 1.5.0中仍然可用。
如果不使用HiveContext
,则可以date_format
使用UDF进行模拟:
from pyspark.sql.functions import udf, lit
my_date_format = udf(lambda d, fmt: d.strftime(fmt))
df.select(
my_date_format(col("vacationdate"), lit("%d-%m-%Y")).alias("date_string")
).show()
请注意,它使用的是C标准格式,而不是Java简单的日期格式
我有一个dataframe有两列(C,D)被定义为string列类型,但列中的数据实际上是日期。例如,C列的日期为“01-apr-2015”,而D列的日期为“20150401”。我想将这些数据更改为日期列类型,但我没有找到一个好的方法。我查看了在Spark SQL的DataFrame中将string列类型转换为Date列类型所需的堆栈溢出。日期格式可以是“01-apr-2015”,我看了这篇文章,
问题内容: (大家好。我特别喜欢SQL和MySQL。我知道一些PHP。) 我有一个包含“ date_string”列的表。出于传统原因,这是一个文本字段,其中包含d / m / YY格式的日期。例如2009年11月22日为“ 22/11/09”。 问题:如何将此列中的所有字段都转换为标准的MySQL日期格式(YYYY-mm-dd),就地? 或者,由于列类型是文本,因此无法将其更改到位,我该如何获取
下面是我做的方式: 我只是想知道,这是正确的方法吗,因为在运行逻辑回归时,我得到了一些错误,所以我想知道,这是麻烦的原因吗。
问题内容: 我有一个传统的postgres db,它具有将日期列强制转换为字段(不要问)。我想更改表和列以包含实际日期。因为这有效: 我天真地认为这可能有效: 但事实并非如此。有无知的线索吗? 问题答案: 这 恰好 符合OP的要求。我们这里有一个简单的思想/错别字。 在手册中了解有关ALTER TABLE的更多信息 。 演示: 提示:您写的不是。
我得到一串零。有人能帮忙吗?
问题内容: 我将Pandas’ver 0.12.0’与Python 2.7结合使用,并具有如下数据框: 该系列由一些整数和字符串组成。它在默认情况下是。我想将的所有内容转换为字符串。我试过了,产生下面的输出。 1) 如何将的所有元素转换为String? 2) 我最终将用于为数据帧建立索引。与具有整数索引相比,在数据帧中具有String索引会降低速度吗? 问题答案: 您可以将id的所有元素转换为使用