python - pyspark:使用模式加入?或者将模式转换为列表?

标签 python pyspark apache-spark-sql

我使用以下代码来连接两个数据框:

new_df = df_1.join(df_2, on=['field_A', 'field_B', 'field_C'], how='left_outer')

上面的代码工作正常,但有时df_1df_2有数百列。是否可以使用模式加入而不是手动添加所有列?或者有没有一种方法可以将模式转换为列表?非常感谢!

最佳答案

如果您的意思是以某种方式join 合并列数据类型,则您无法加入模式。您可以做的是首先提取列名称,然后将它们作为 on= 的列表参数传递,如下所示:

join_cols = df_1.columns
df_1.join(df_2, on=join_cols, how='left_outer')

现在显然您必须编辑 join_cols 的内容,以确保它只包含您实际想要加入 df_1df_2 的名称> 上。但是,如果有数百个有效列,则可能比将它们一一添加要快得多。您还可以将 join_cols 设置为 df_1df_2 列的交集,然后从那里进行编辑(如果更合适的话)。

编辑:虽然我应该补充一点,Spark 2.0 几乎随时都会发布,而且我还没有熟悉所有的更改。因此这可能也值得研究,或者提供 future 的解决方案。

关于python - pyspark:使用模式加入?或者将模式转换为列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38065009/

相关文章:

java - 在Spark Java API中联接行数据集

apache-spark - 如何在一个字符串中读取整个文件

java - 在 Spark Java API 中将 JavaPairRDD 转换为 Dataframe

python - 如何从传递关系访问数据?

仅存储更改的 Python 字典

date - 由于时间戳记长度,从Spark到Elasticsearch写入日期时出错

python - PySpark 在 Dataframe 列中插入常量 SparseVector

apache-spark - pyspark.sql.utils.IllegalArgumentException : u'Field "features" does not exist. '

python - 用beautifulsoup提取br标签之间的数据

python - Plotly:如何使用 Pandas 数据框定义桑基图的结构?