【问题标题】:Filtering string in pyspark在pyspark中过滤字符串
【发布时间】:2016-11-22 14:03:23
【问题描述】:

我有一列包含要过滤的字符串。

我希望“fruits”列包含:(“apple”或“pear”或“banana”)而不是“ananas”。

当我使用以下代码时,一切正常:

results_raw.where(
    (col('fruits').like('%apple%')) | 
    (col('fruits').like('%pear%')) |
    (col('fruits').like('%banana%')) |
    (col('fruits').like('%orange%')) )

但是,当我添加如下附加条件时,它不再起作用:

results_raw.where(
    (col('fruits').like('%apple%')) | 
    (col('fruits').like('%pear%')) |
    (col('fruits').like('%banana%')) |
    (col('fruits').like('%orange%')) &
    (col('fruits') != ('%ananas%')) )

这似乎是一个基本问题,但我一直在努力解决“而不是”的情况。

提前感谢您的帮助!

【问题讨论】:

  • 那么,bananas...应该选择还是不选择?

标签: apache-spark pyspark


【解决方案1】:

您可以用~ 否定(并且您需要保持括号有序):

(cond1 | cond2 | cond3 | cond4) & ~col('fruits').like('%ananas%')

【讨论】:

  • @user3577165:考虑接受答案,因为它对你有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-16
  • 2013-04-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多