1

是否可以像这样在 Koalas 数据框中插入和填充不同的列?

%%spark -s sparkenv2

kdf = ks.DataFrame({
    'id':[1,2,3,4],
    'A': [None, 3, None, None],
    'B': [2, 4, None, 3],
    'C': [99, None, None, 1],
    'D': [0, 1, 5, 4]
    },
    columns=['id','A', 'B', 'C', 'D'])

kdf['A']=kdf['A'].ffill()
kdf['B']=kdf['B'].interpolate()
4

1 回答 1

0

对于 ffill,这是取自 John Paton 的博客

from pyspark.sql import Window
from pyspark.sql.functions import last

spark_df = kdf.to_spark()

# define the window
window = Window.orderBy('id').rowsBetween(-sys.maxsize, 0)

# define the forward-filled column
filled_column = last(spark_df['A'], ignorenulls=True).over(window)

# do the fill
spark_df_filled = spark_df.withColumn('A_filled', filled_column)

我对插值没有答案 - 仍然试图自己找到它。

PS - 您可以通过更改 rowsBetween(0, max.size) 并使用 first() 而不是 last() 来切换到回填。

于 2021-05-31T18:36:48.447 回答