如何将一个DataFrame的单列追加到另一个DataFrame?报错处理
解决Spark DataFrame关联追加列的错误与优雅方案
错误原因
你碰到的TypeError: 'DataFrame' object is not callable,是因为Spark DataFrame中不能用括号()来引用列,必须改用方括号[]或者点.语法。
优雅解决方案
既然不想手动删除df_2的多余列,只需在关联前只提取需要的列(关联用的my_metadata_id和要追加的version),就能避免冗余列被带入,同时修正列引用语法:
基础写法
# 筛选df_2的必要列后左关联到df_1 df_1 = df_1.join( df_2.select("my_metadata_id", "version"), df_1["metadata_id"] == df_2["my_metadata_id"], how="left" ) # 若不需要保留df_2的关联列,直接删除即可 df_1 = df_1.drop(df_2["my_metadata_id"])
更清晰的别名写法
如果列名容易混淆,用col()函数明确引用列,可读性更强:
from pyspark.sql.functions import col # 先提取df_2的必要子集 df_2_subset = df_2.select(col("my_metadata_id"), col("version")) # 执行关联并清理冗余列 df_1 = df_1.join( df_2_subset, col("metadata_id") == col("my_metadata_id"), how="left" ).drop(col("my_metadata_id"))
核心逻辑
select("my_metadata_id", "version")精准保留所需列,完全不用处理df_2的其他冗余列- 用
[]或col()替代()引用列,彻底解决调用错误 - 最后可选删除关联用的
my_metadata_id,保证df_1结构简洁
内容的提问来源于stack exchange,提问作者johnnydoe
相关产品推荐
相关产品推荐

