Извиняюсь за очень общий вопрос:
У меня есть фрейм данных pyspark, и я применяю к нему условия fill.na
и when
следующим образом:
df2 = df.withColumn('A', F.when( (F.col('B') != 'qqq') & (F.col('C) != 'vvv') ,1).otherwise(0)).na.fill('').groupby('X').sum("A").toPandas()
Если я бегу счетчик для конкретного значения X, я получаю счет, как это:
df2.loc[df2['X'] == '2018-12-10']
# count value is 5000
однако, если я помещаю fill.na
часть кода, в самом начале, я получаюдругой результат:
df2 = df.na.fill('').withColumn('A', F.when( (F.col('B') != 'qqq') & (F.col('C) != 'vvv') ,1).otherwise(0)).groupby('X').sum("A").toPandas()
df2.loc[df2['X'] == '2018-12-10']
# count value is 170000
Разобравшись немного больше, я обнаружил, что в этом втором случае, когда условия игнорируются, поэтому я получаю гораздо большее количество записей
1016 *. Может кто-нибудь сказать мне, что может быть причиной этого? Есть ли у нее с тем, как искра строит свою ленивую оценку набора данных? 1018 * Спасибо.