【发布时间】:2020-08-08 00:40:40
【问题描述】:
例如在 Pandas 中我会这样做
data_df = (
pd.DataFrame(dict(col1=['a', 'b', 'c'], col2=['1', '2', '3']))
.pipe(lambda df: df[df.col1 != 'a'])
)
这类似于R的管道%>%
PySpark 中有类似的东西吗?
【问题讨论】:
-
我不这么认为。至少,这不是一个很好的使用方法。在 PySpark 中,您的 DataFrame 分布在多个服务器上。如果有一种行为类似于 Panda 的管道的方法,它需要将来自所有服务器的数据收集到一个单独的服务器中,然后调用 lambda 函数。为什么要使用
pipe?你想创建一个新列吗?添加新的?对行/组/整个数据框进行转换或聚合? -
@MkWTF 此时我真的只想重命名列。就是这样。
-
你有多种方法可以做到这一点,check this site,学习 spark 真的很好。我也留下pyspark docs here,以备不时之需。
-
@MkWTF 我有几百列,需要在循环中重命名它们,所以在 pandas 中使用
pipe(standardize_col_names)之类的东西是一个很好的情况。我的主要问题是关于@someshwar-kale 回答的pipe。管道是 Spark 中对应的东西