在pyspark

时间:2018-04-24 01:46:19

标签: apache-spark pyspark spark-dataframe pyspark-sql

我有一个pyspark数据框,偶尔会有一列与另一列匹配的错误值。它看起来像这样:

| Date         | Latitude      |
| 2017-01-01   | 43.4553       |
| 2017-01-02   | 42.9399       |
| 2017-01-03   | 43.0091       |
| 2017-01-04   | 2017-01-04    |

显然,最后一个纬度值是不正确的。我需要删除任何和所有这样的行。我考虑过使用.isin(),但我似乎无法让它发挥作用。如果我试试

df['Date'].isin(['Latitude'])

我明白了:

Column<(Date IN (Latitude))>

有什么建议吗?

2 个答案:

答案 0 :(得分:5)

是。您可以使用~(反转运算符)使用isin()函数排除元素。没有关于它的真实文档,但如果它能为您提供所需的输出,您可以尝试。

df = df.filter(~df['Date'].isin(df['Latitude']))

答案 1 :(得分:1)

如果您对SQL语法更熟悉,可以使用pyspark-sql中的filter()条件替代方法:

df = df.filter("Date NOT IN (Latitude)")

或等效使用pyspark.sql.DataFrame.where()

df = df.where("Date NOT IN (Latitude)")