Это, безусловно, вызвано нулевыми значениями в столбце value
.
df.count()
подсчитывает все строки в кадре данных и нули. Но когда вы используете contains
в фильтре, нулевые значения пропускаются.
Пример :
data = [("value1_>", ), ("value2_>", ), ("value3_<",), ("value4",), (None,)]
df = spark.createDataFrame(data, ['value'])
df1 = df.filter((col("value").contains('>') | col("value").contains('<')))
df2 = df.filter(~(col("value").contains('>') | col("value").contains('<')))
print(df.count())
print(df1.count())
print(df2.count())
#5
#3
#1