Как конфертировать из DatetimeIndex в Pandas в DataFrame в PySpark? - PullRequest
0 голосов
/ 02 января 2019

У меня есть следующий код:

# 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 dataframe со списком дат. Затем я проверяю df3, но похоже, что lit просто пустой список:

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

Что происходит?

Ответы [ 2 ]

0 голосов
/ 02 января 2019

В вашем случае d - это DatetimeIndex.Что вы можете сделать, это создать pandas DataFrame из DatetimeIndex, а затем преобразовать Pandas DF в spark DF.PFB Пример кода.

1.Создать DatetimeIndex

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()
0 голосов
/ 02 января 2019

d - это DatetimeIndex, а не фрейм данных панд здесь.Сначала необходимо преобразовать его во фрейм данных, что можно сделать с помощью метода 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|
+-------------------+
...