【发布时间】:2020-06-20 16:51:41
【问题描述】:
现在我有这样的数据:
+----+----+
|col1| d|
+----+----+
| A| 4|
| A| 10|
| A| 3|
| B| 3|
| B| 6|
| B| 4|
| B| 5.5|
| B| 13|
+----+----+
col1 是StringType,d 是TimestampType,这里我用DoubleType 代替。 我想根据条件元组生成数据。 给定一个元组[(A,3.5),(A,8),(B,3.5),(B,10)] 我想要这样的结果
+----+---+
|col1| d|
+----+---+
| A| 4|
| A| 10|
| B| 4|
| B| 13|
+----+---+
即对于元组中的每个元素,我们从 pyspark 数据帧中选择 d 大于元组数且 col1 等于元组字符串的前 1 行。 我已经写的是:
df_res=spark_empty_dataframe
for (x,y) in tuples:
dft=df.filter(df.col1==x).filter(df.d>y).limit(1)
df_res=df_res.union(dft)
但是我认为这可能有效率问题,我不知道我是否正确。
【问题讨论】:
-
@anky 很抱歉数据让您感到困惑。我已经编辑了我的问题表,数据过滤只是关于 d 和 col1,与其他列无关。大声笑