【发布时间】:2018-08-31 21:45:41
【问题描述】:
我正在使用PySpark 数据框。我的数据集包含三个属性,id、name 和 address。我正在尝试根据 name 值删除相应的行。我一直在尝试的是获得我要删除的行的唯一id
ID = df.filter(df["name"] == "Bruce").select(df["id"]).collect()
我得到的输出如下:[Row(id='382')]
我想知道如何使用id 删除一行。另外,我怎样才能用另一个替换数据框中的某些值?例如,将所有values == "Bruce" 替换为"John"
【问题讨论】:
-
您只需要从输出中提取 ID 值。
id_vals = [r['id'] for r in ID] -
您不能在 DataFrame 中使用索引。 Spark DataFrames 具有与 pandas 不同的结构行为。 Spark 也不是 RDBMS。所以除非你过滤和收集,否则没什么可做的。 Spark DataFrame 不适合用作查找表。
-
您可以使用 head() 和 map 将收集到的条目转换为一个条目。
-
谢谢@pault。这就是我想知道的。
-
@zimmer np,我添加了一个带有解释的答案。我忍不住想这是XY Problem。你想做什么?可能有比使用 collect 一次收集一个
id更好的解决方案。