【问题标题】:Spark Delete Rows火花删除行
【发布时间】:2016-08-08 11:33:14
【问题描述】:

我有一个包含大约 20k 行的 DataFrame。

我想在数据集中随机删除 186 行。

为了了解上下文 - 我正在测试缺失数据的分类模型,并且每一行都有一个 unix 时间戳。 186行对应3秒(每秒有62行数据)

我的目标是,当数据流式传输时,数据很可能会 失踪几秒钟。我正在从时间窗口中提取特征,所以我想看看丢失的数据是如何影响模型性能的。

我认为最好的方法是转换为rdd 并使用filter 函数,类似这样,并将逻辑放入过滤器函数中。

dataFrame.rdd.zipWithIndex().filter(lambda x: )

但我被逻辑困住了——我该如何实现呢? (使用 PySpark)

【问题讨论】:

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


    【解决方案1】:

    尝试这样做:

    import random
    startVal = random.randint(0,dataFrame.count() - 62)
    dataFrame.rdd.zipWithIndex()\
                 .filter(lambda x: not x[<<index>>] in range(startVal, startVal+62))
    

    这应该可行!

    【讨论】:

    • 嘿@Thiago,还有另一个后续问题。我想按一列过滤,例如我的一列是时间戳,以删除 10 秒的行。我尝试添加.filter("timestamp" in range(startVal, startVal+10))删除10秒,但它不起作用。
    • 您的列是 Int 吗?还是时间戳类型的dataFrame?
    • 它是一个 int,(将它从 unix 时间戳除以 1000 转换而来)。因为是时序数据,一秒内有很多列,所以按count删除是行不通的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-05
    • 1970-01-01
    • 2020-03-11
    • 2011-01-22
    • 2011-09-26
    • 2023-03-11
    • 1970-01-01
    相关资源
    最近更新 更多