首页 > 解决方案 > Python 3 上的 Lambda

问题描述

我有一个包含 2 列的数据框,我想将它分成两个数组。我知道使用 Python 2 我可以使用它:

result = spark.sql("SELECT acoustic_data, time_to_failure from df order by acoustic_data asc")
result_rdd = result.rdd.sample(False, 0.0001).map(lambda row: (row.acoustic_data, row.time_to_failure))
result_signal = result_rdd.filter(lambda (acoustic_data, time_to_failure): acoustic_data).collect()

与其他列相同。

但是,如果我现在尝试这样做,我会收到此错误:

TypeError:()缺少1个必需的位置参数:'time_to_failure'

result_rdd 返回:

结果_rdd

所以我想从中取出 2 个数组。

问候

标签: pythonapache-sparkdataframelambda

解决方案


Python 3删除了元组参数 unpacking,所以这不再有效:

lambda (acoustic_data, time_to_failure): acoustic_data

将其替换为以下内容:

lambda acoustic_data_and_time_to_failure: acoustic_data_and_time_to_failure[0]

推荐阅读