如何在 PySpark 中将 Pandas' DatetimeIndex 转换为 DataFrame?
How to convert from Pandas' DatetimeIndex to DataFrame in PySpark?
我有以下代码:
# 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,但它看起来只是一个空列表:
++
||
++
||
||
||
||
||
||
||
||
发生了什么事?
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|
+-------------------+
在你的情况下 d
是 DatetimeIndex
。您可以做的是从 DatetimeIndex
创建 pandas DataFrame,然后将 Pandas DF 转换为 spark DF。 PFB 示例代码。
1。创建日期时间索引
import pandas as pd
d = pd.date_range('2018-12-01', '2019-01-02', freq='MS')
2。创建 Pandas DF.
p_df = pd.DataFrame(d)
3。创建 Spark DataFrame。
spark.createDataFrame(p_df).show()
现在我们可以使用 pyspark pandas。
https://databricks.com/blog/2021/10/04/pandas-api-on-upcoming-apache-spark-3-2.html
导入 pyspark.pandas 作为 pd
所以我们可以在 .to_dataframe() 之后使用 .to_spark() 作为 pyspark 的数据帧。
我有以下代码:
# 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,但它看起来只是一个空列表:
++
||
++
||
||
||
||
||
||
||
||
发生了什么事?
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|
+-------------------+
在你的情况下 d
是 DatetimeIndex
。您可以做的是从 DatetimeIndex
创建 pandas DataFrame,然后将 Pandas DF 转换为 spark DF。 PFB 示例代码。
1。创建日期时间索引
import pandas as pd
d = pd.date_range('2018-12-01', '2019-01-02', freq='MS')
2。创建 Pandas DF.
p_df = pd.DataFrame(d)
3。创建 Spark DataFrame。
spark.createDataFrame(p_df).show()
现在我们可以使用 pyspark pandas。 https://databricks.com/blog/2021/10/04/pandas-api-on-upcoming-apache-spark-3-2.html
导入 pyspark.pandas 作为 pd
所以我们可以在 .to_dataframe() 之后使用 .to_spark() 作为 pyspark 的数据帧。