首页 > 解决方案 > 加入 Dataframe 的相同列后,Drop 功能无法正常工作

问题描述

我在加入两个数据框 A、B 时遇到了同样的问题。

例如:

c = df_a.join(df_b, [df_a.col1 == df_b.col1], how="left").drop(df_b.col1)

当我尝试像上面那样删除重复列时,此查询不会删除 df_b 的 col1。相反,当我尝试删除 df_a 的 col1 时,它能够删除 df_a 的 col1。

任何人都可以谈谈这个。

注意:我在我的项目中尝试了相同的方法,该项目有 200 多个列并显示相同的问题。有时,如果我们有很少的列,但如果我们有更多的列,这个 drop 函数就可以正常工作。

pyspark中的左外连接后删除功能不起作用

标签: apache-sparkpysparkapache-spark-sqlpyspark-dataframes

解决方案


合并后删除重复列的功能。

def dropDupeDfCols(df):
newcols = []
dupcols = []

for i in range(len(df.columns)):
    if df.columns[i] not in newcols:
        newcols.append(df.columns[i])
    else:
        dupcols.append(i)

df = df.toDF(*[str(i) for i in range(len(df.columns))])
for dupcol in dupcols:
    df = df.drop(str(dupcol))

return df.toDF(*newcols) 

推荐阅读