我有两个spark scalaDataframe,我需要使用一个Dataframe中的一个布尔列来过滤第二个Dataframe。两个Dataframe的行数相同。
在Pandas中,我希望它是这样的:
import pandas as pd
df1 = pd.DataFrame({"col1": ["A", "B", "A", "C"], "boolean_column": [True, False, True, False]})
df2 = pd.DataFrame({"col1": ["Z", "X", "Y", "W"], "col2": [1, 2, 3, 4]})
filtered_df2 = df2[df1['boolean_column']]
// Expected filtered_df2 should be this:
// df2 = pd.DataFrame({"col1": ["Z", "Y"], "col2": [1, 3]})
如何在spark scala中以最节省时间的方式执行相同的操作?
我目前的解决办法是 "boolean_column"
从 df1
至 df2
,然后筛选 df2
只选择具有 true
新添加列中的值,最后删除 "boolean_column"
从 df2
,但我不确定这是不是最好的解决办法。
任何建议都将不胜感激。
编辑:
预期的输出是一个sparkscalaDataframe(不是列表或列),它与第二个Dataframe具有相同的模式,并且只有来自的行的子集 df2
满足 "boolean_column"
的 df1
.
的模式 df2
上面介绍的只是一个例子。我期待着收到 df2
作为参数,具有不同(且不固定)模式的任意数量的列。
2条答案
按热度按时间w8ntj3qf1#
我用以下代码解决了这个问题:
过滤后的Dataframe如下所示:
uubf1zoe2#
两个都可以
DataFrame
然后过滤这些元组。