Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用UDAF填充PySpark数据帧中的时间间隔_Python_Pyspark_User Defined Functions - Fatal编程技术网

Python 如何使用UDAF填充PySpark数据帧中的时间间隔

Python 如何使用UDAF填充PySpark数据帧中的时间间隔,python,pyspark,user-defined-functions,Python,Pyspark,User Defined Functions,我有一个数据框,其中包含某个月某个存储的值。看起来像 df:pyspark.sql.dataframe.DataFrame TRADEID:integer time_period:date VALUE:double 理想情况下,对于每个TRADEID,一年中的每个月都应该有值,但是,对于某些TRADEID,某些月份会被跳过 我需要用上一个月可用的值来填补这些空白,例如 老df |TRADEID|time_period|value| +-------+-----------+-----+ |

我有一个数据框,其中包含某个月某个存储的值。看起来像

df:pyspark.sql.dataframe.DataFrame

TRADEID:integer
time_period:date
VALUE:double
理想情况下,对于每个TRADEID,一年中的每个月都应该有值,但是,对于某些TRADEID,某些月份会被跳过

我需要用上一个月可用的值来填补这些空白,例如

老df

|TRADEID|time_period|value|
+-------+-----------+-----+
|      1| 31-01-2019|    5|
|      1| 31-03-2019|    6|
|      2| 31-01-2019|   15|
|      2| 31-03-2019|   20|
+-------+-----------+-----+

新df

|TRADEID|time_period|value|
+-------+-----------+-----+
|      1| 31-01-2019|    5|
|      1| 28-02-2019|    5|
|      1| 31-03-2019|    6|
|      2| 31-01-2019|   15|
|      2| 28-02-2019|   15|
|      2| 31-03-2019|   20|
+-------+-----------+-----+

据我所知,我可以使用UDAF,该过程看起来像
df.groupby('TRADEID').apply(UDAF)

有一个类似的例子,但它没有回答以下问题:
1.从性能的角度来看,这是最佳的方式吗?有很多TRADEID和数百万行数据。
2.关于如何编写性能良好的UDAF的任何建议。如何定义缺失的月份?我可以创建包含所有所需月份的参考数据框并进行外部联接,但从上一个可用月份到添加月份的填充值的好方法是什么?

可能重复的可能重复的