【问题标题】:How to replace null values from left join table in pyspark如何在pyspark中替换左连接表中的空值
【发布时间】:2018-12-24 00:37:22
【问题描述】:

我有两张桌子。表 1 有 500 万行,表 2 有 300 万行。当我执行 table1.join(table2, ..., 'left_outer') 时,表 2 中的所有列在新表中都有空值。它看起来如下(表 2 中的 var3 和 4 是不同长度字符串的数组):

t1.id var1 var2     table2.id        table2.var3  table2.var4
1  1.3  4               1          ['a','b','d']  ['x','y','z']
2  3.0   5              2          ['a','c','m','n'] ['x','z']
3  2.3   5

我打算在join之后使用countvectorizer,它不能处理空值。所以我想用字符串类型的空数组替换空值。

这是与PySpark replace Null with Array 中讨论的类似问题

但我有来自表 2 的 10 多个变量,每个变量都有不同的维度。

有什么我能做的建议吗?加入前可以做countvectorizer吗?

【问题讨论】:

  • 从技术上讲,如果在左外连接之后所有结果行都为空,那么就没有什么可以加入的了。你确定它工作正常吗?如果只有部分结果为空,那么您可以通过将 left_outer 连接更改为内部连接来消除它们。
  • 只有一些行是空的,我需要保留这些行。

标签: replace null pyspark


【解决方案1】:

Dataframe 有 .na.fill() 属性。

replace_cols = {col:'' for col in df.columns}
df.na.fill(replace_cols)

【讨论】:

  • 看来 countervectorizer 无法处理 na。所以在这种情况下,na.fill 或 fillna 对我不起作用。
猜你喜欢
  • 1970-01-01
  • 2011-11-22
  • 2014-12-26
  • 2010-12-12
  • 2020-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-11
相关资源
最近更新 更多