我使用以下代码连接两个数据帧:
new_df = df_1.join(df_2, on=['field_A', 'field_B', 'field_C'], how='left_outer')
上面的代码工作得很好,但有时df_1
和df_2
有数百列。是否可以使用模式而不是手动添加所有列进行连接?或者有没有办法把模式转换成列表?非常感谢!
如果您的意思是以某种方式让join
合并列dtypes,则不能连接模式。您可以做的是首先提取列名,然后将它们作为on=
的列表参数传递,如下所示:
join_cols = df_1.columns
df_1.join(df_2, on=join_cols, how='left_outer')
现在很明显,你必须编辑join_cols
的内容,以确保它只有你真正想要加入df_1
和df_2
的名称。但是,如果有数百个有效列,那么可能比逐个添加它们要快得多。您也可以使join_cols成为df_1
和df_2
列的交集,然后从那里编辑,如果这样更合适的话。
编辑:虽然我应该补充说,Spark 2.0的发布实际上是现在的任何一天,我还没有熟悉所有的变化。因此,这可能也值得研究,或者提供一个未来的解决方案。