У меня есть фрейм данных искры, как показано ниже
df = pd.DataFrame({
'subject_id':[1,1,1,1,2,2,2,2,3,3,4,4,4,4,4],
'readings' : ['READ_1','READ_2','READ_1','READ_3',np.nan,'READ_5',np.nan,'READ_8','READ_10','READ_12','READ_11','READ_14','READ_09','READ_08','READ_07'],
'val' :[5,np.nan,7,np.nan,np.nan,7,np.nan,np.nan,np.nan,np.nan,np.nan,np.nan,np.nan,np.nan,46],
})
from pyspark.sql.types import *
from pyspark.sql.functions import isnan, when, count, col
mySchema = StructType([ StructField("subject_id", LongType(), True)\
,StructField("readings", StringType(), True)\
,StructField("val", FloatType(), True)])
spark_df = spark.createDataFrame(df,schema=mySchema)
Что я хотел бы сделать, так это удалить столбцы, в которых более 80% значений NaN, NULL or 0
?
Я пробовал что-то вроде ниже, но это не работает
spark_df = spark_df.dropna(axis = 'columns',how=any,thresh=12)
Вышеупомянутое возможно в pandas
, но здесь это не работает. Я получаю следующую ошибку, и это не удивительно
TypeError: dropna() получила неожиданный аргумент ключевого слова «ось»
Обратите внимание, что мой реальный фрейм данных 40 million and 3k columns
. Я сослался на этот пост но на него пока нет ответа
Есть ли что-нибудь эквивалентное этому в pyspark?
Я ожидаю, что мой вывод будет таким, как показано ниже, всего с двумя столбцами.