我有一个包含两列的数据帧:
+--------+-----+
| col1| col2|
+--------+-----+
|22 | 12.2|
|1 | 2.1|
|5 | 52.1|
|2 | 62.9|
|77 | 33.3|
我想创建一个新的dataframe,它将只接受以下行
“col1的值”>“col2的值”
请注意,col1具有long类型,而col2具有double类型
结果应该是这样的:
+--------+----+
| col1|col2|
+--------+----+
|22 |12.2|
|77 |33.3|
发布于 2018-09-19 16:06:10
另一种可能的方法是使用DF的where
函数。
例如:
val output = df.where("col1>col2")
+----+----+
|col1|col2|
+----+----+
| 22|12.2|
| 77|33.3|
+----+----+
发布于 2018-09-19 21:21:43
我认为最好的方法是简单地使用"filter“。
df_filtered=df.filter(df.col1>df.col2)
df_filtered.show()
+--------+----+
| col1|col2|
+--------+----+
|22 |12.2|
|77 |33.3|
发布于 2021-04-14 03:29:15
根据条件保留行的最好方法是使用filter
,正如其他人提到的那样。
要回答标题中所述的问题,根据条件删除行的一种选择是在left_anti中使用Pyspark join。例如,要使用col1>col2删除所有行,请使用:
rows_to_delete = df.filter(df.col1>df.col2)
df_with_rows_deleted = df.join(rows_to_delete, on=[key_column], how='left_anti')
https://stackoverflow.com/questions/52395986
复制相似问题