У меня есть фрейм данных с двумя столбцами, который выглядит следующим образом:
+----+-----+
|type|class|
+----+-----+
| | 0|
| | 0|
| | 0|
| | 0|
| | 0|
+----+-----+
only showing top 5 rows
Я пытаюсь заполнить пустые значения произвольной строкой, поэтому я сделал следующее:
df = df.fillna({'type': 'Empty'})
Что снова показывает мне те же результаты:
+----+-----+
|type|class|
+----+-----+
| | 0|
| | 0|
| | 0|
| | 0|
| | 0|
+----+-----+
only showing top 5 rows
Так что я искал вокруг и нашел этот пост в stackoverflow, предполагающий, что несовпадающие типы могут вызвать эту проблему, поэтому я сделал:
df = df.withColumn("type", df["type"].cast("string"))
df = df.fillna({'type': 'Empty'})
Я должен отметить, что исходный фрейм данных имеет следующую схему:
StructField(type,StringType,true)
Кроме того, я попытался:
df = df.withColumn("type", when(df["type"] != '', df["type"]).otherwise('Empty'))
, которая работает просто отлично.Я что-то здесь упускаю?fillna
не то, что я ищу?