apache-spark - 加入 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 函数就可以正常工作。
解决方案
合并后删除重复列的功能。
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)
推荐阅读
- python - 通过任务计划程序的两个 Python 脚本
- ios - 着色/绘图代码。如何在不透明度较低的情况下使其更平滑?删除刷点?
- spring - 我可以将两个 Spring 批处理作业链接在一起吗?
- django - django-channels 更新慢 - redis
- symfony - 将捆绑配置注入没有全局变量的树枝
- android - android设置每个buildTypes的productFlavors的signingConfigs
- python - 在 Python 中迭代时间序列(numpy)
- java - 计算器 AWT - 对 2 个数字求和 - GUI 界面 - 服务器/客户端
- postgresql - 使用时区调整时间戳
- java - 使用 servlet 在浏览器上未显示图像