#apache-spark #pyspark #apache-spark-sql #pyspark-dataframes
#apache-spark #apache-spark-sql #pyspark
Вопрос:
У меня ниже DF с нулевыми значениями в некоторых столбцах.
Теперь мне нужно обновить / заменить эти «нулевые» значения на «NA»
------- ------ ----- ------ ----
|Product|Canada|China|Mexico| USA|
------- ------ ----- ------ ----
| Orange| null| 4000| null|4000|
| Beans| null| 1500| 2000|1600|
| Banana| 2000| 400| null|1000|
|Carrots| 2000| 1200| null|1500|
------- ------ ----- ------ ----
Я нашел метод ‘fillna’ для замены нулевого значения
однако мне нужно обновить / заменить все столбцы, имеющие нулевые значения
Итак, что-то вроде этого или лучший способ
replaced = df.fillna({str(col):'NA', col for col in df.columns})
Ценю любую помощь, чтобы найти правильный подход
Спасибо
Комментарии:
1. Каков тип данных этих столбцов (кроме product)? Можете ли вы добавить схему?
Ответ №1:
Вам нужно использовать subset()
и передавать имя столбца в порядке заполнения нулевыми значениями
df = df.fillna(0, subset=['Canada', 'China', 'Mexico', 'USA'])
или, в случае, если вы хотите использовать fillna()
для всех столбцов, передайте их в a dictionary
, также вы можете указать свой выбор 🙂
df = df.fillna({'Canada':'4', 'China': '5', 'Mexico' : '6', 'USA': '7})
Или вы можете просто использовать ниже, чтобы заполнить все столбцы нулевыми значениями
df = df.fillna("a_value")
Комментарии:
1. Привет @ dsk .. я перепробовал все, что вы предложили, но ни один из них не выдал ожидаемый результат.. он все еще перенастраивался с нулевым значением
2. Можете ли вы попробовать преобразовать в StringType и заполнить na. и проверить
3. дайте мне знать, пожалуйста, где я должен преобразовать в строку…
4. df = df.withColumn(«Канада», F.col(Канада).cast(T.StringType())) — попробуйте это