Pyspark 删除数据帧中的重复列
我知道这似乎是一个非常简单的问题,我已经搜索了谷歌和stackoverflow,但找不到确切的我需要的 我使用以下代码将一个数据帧Pyspark 删除数据帧中的重复列,pyspark,pyspark-sql,Pyspark,Pyspark Sql,我知道这似乎是一个非常简单的问题,我已经搜索了谷歌和stackoverflow,但找不到确切的我需要的 我使用以下代码将一个数据帧config中的一些数据聚合到另一个config1。代码的基础由另一名stackoverflow成员提供谢谢@Sunny Shukla exprs=map(lambda c: max(c).alias(c), config.columns) config1=config.groupBy(["seq_id","tool_id"])\ .agg(f.count(f.lit
config
中的一些数据聚合到另一个config1
。代码的基础由另一名stackoverflow成员提供谢谢@Sunny Shukla
exprs=map(lambda c: max(c).alias(c), config.columns)
config1=config.groupBy(["seq_id","tool_id"])\
.agg(f.count(f.lit(1)).alias('count'),
*exprs).where('count = 1').drop('count')
config
dataframe有20列,config1
df有22列,因为我使用了2列seq\u id
和tool\u id
对其进行了分组,但映射了整个原始列以保留原始列名(我确信有一种更优雅的方法可以做到这一点)
因此,生成的数据帧config1
具有重复的seq_id
和tool_id
列。如果我这样做
config1.drop('seq_id','tool_id')
然后它删除了4列,最后我得到了18列,而不是20列。
有没有一种更优雅的方法可以在不编写UDF的情况下实现这一点?
谢谢您如果您使用。请选择并指定您想要的20列,这样做有效吗?您在此查询中到底想做什么?似乎您正试图删除任何具有seq_id和tool_id且超过1行的行。在这种情况下,为什么不从代码中删除
,*expr
,完成同样的事情呢?