如何在PySpark中将Pandas的DatetimeIndex转换为DataFrame?

3

我有以下代码:

# Get the min and max dates
minDate, maxDate = df2.select(f.min("MonthlyTransactionDate"), f.max("MonthlyTransactionDate")).first()
d = pd.date_range(start=minDate, end=maxDate, freq='MS')    

tmp = pd.Series(d)
df3 = spark.createDataFrame(tmp)

我已经检查了tmp并且有一个包含日期列表的pandas数据框。 然后我检查了df3,但它看起来像是一个空列表:

++ 
|| 
++ 
|| 
|| 
|| 
|| 
|| 
|| 
|| 
||

发生了什么?

3个回答

6
在您的情况下,dDatetimeIndex。您可以创建一个基于 DatetimeIndex 的 pandas DataFrame,然后将 Pandas DF 转换为 spark DF。以下是示例代码。

1. 创建 DatetimeIndex

import pandas as pd
d = pd.date_range('2018-12-01', '2019-01-02', freq='MS')

2. 创建Pandas数据框。

p_df = pd.DataFrame(d)

3. 创建Spark DataFrame。

spark.createDataFrame(p_df).show()

3

d 是一个 DatetimeIndex,而非 pandas 数据帧。你需要先将其转换为数据帧,可以使用 to_frame 方法:

d = pd.date_range('2018-10-10', '2018-12-15', freq='MS')
spark.createDataFrame(d).show()
++
||
++
||
||
++

spark.createDataFrame(d.to_frame()).show()
+-------------------+
|                  0|
+-------------------+
|2018-11-01 00:00:00|
|2018-12-01 00:00:00|
+-------------------+

0

目前来看,你的回答不是很清楚。请编辑并添加更多细节,以帮助他人理解它如何回答问题。你可以在帮助中心找到更多关于如何撰写好答案的信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接