PySpark删除列问题

时间:2018-06-28 23:41:00

标签: pyspark pyspark-sql

我的代码的目标是尝试在每次显示时删除一列。我知道有一种无需使用for循环即可删除列的方法。该方法不起作用的原因是列是动态的。问题是.drop命令没有删除指示的列。所以这是一些伪代码。

for column_name in column_name_list: 

    # create data_frame1 with the column name 
    # join data_frame with other data_frame2 
    # Here I drop column_name in data_frame1 
    data_frame = data_frame.drop(column_name) 

问题是在删除之后,column_name在第二次迭代期间重新出现。我的猜测是,我将列拖放到副本上,而不是使用删除的列“保存” data_frame。感谢您的所有帮助。

1 个答案:

答案 0 :(得分:1)

加入后,也许您有2个具有相同名称的列。如果您使用相同的名称加入,则可以通过这种方式轻松加入:

dataframe1.join(dataframe2, col_name) # no need to dataframe1.col_name == dataframe2.col_name 

如果您已经做过并且上面的代码不起作用(我使用此代码并且已经起作用),则可以使用:

 data_frame.select(*set(dataframe.columns) - set(column_names_list))