Pyspark 如何删除dataframe中的列

Pyspark 如何删除dataframe中的列,pyspark,spark-dataframe,Pyspark,Spark Dataframe,现在,它在dataframe中显示,没有删除列 df2000.drop('jan','feb','mar','apr','may','jun','jul','aug','sep','oct','nov','dec').show() 当我单独运行show命令来检查表时,会出现deleted列 drop不是一种副作用功能。它返回删除了指定列的新数据帧。因此,您必须将新的dataframe分配给稍后要引用的值,如下所示 df2000.show() 现在,在新数据帧上执行show,将在删除所有月份

现在,它在dataframe中显示,没有删除列

df2000.drop('jan','feb','mar','apr','may','jun','jul','aug','sep','oct','nov','dec').show()


当我单独运行show命令来检查表时,会出现deleted列

drop
不是一种副作用功能。它返回删除了指定列的新数据帧。因此,您必须将新的dataframe分配给稍后要引用的值,如下所示

df2000.show()

现在,在新数据帧上执行
show
,将在删除所有月份列的情况下产生所需的结果

你能试试这个吗<代码>df2000\u drop\u cols=df2000.drop('jan','feb','mar')?是的。我试过这个。它不起作用了。Df2000_drop_cols正在分配..是的,我试过这个。它不起作用了。Df2000\u dropped\u cols未分配>>>Df2000\u dropped\u cols.show()回溯(最近一次调用):文件“”,第1行,在AttributeError:“NoneType”对象没有属性“show”,但当我执行此操作时,Df2000\u dropped\u cols=Df2000。drop('jan'、'feb'、'mar'))结果显示符合我们的预期。在那之后,检查这个df2000\u下降了\u cols DF。它的throw df2000_drop_cols.show()回溯(最近一次调用last):AttributeError中第1行的文件“”:“NoneType”对象没有属性“show”–
>>> df2000 = spark.createDataFrame([('a',10,20,30),('a',10,20,30),('a',10,20,30),('a',10,20,30)],['key', 'jan', 'feb', 'mar'])
>>> cols = ['jan', 'feb', 'mar']
>>> df2000.show()
+---+---+---+---+
|key|jan|feb|mar|
+---+---+---+---+
|  a| 10| 20| 30|
|  a| 10| 20| 30|
|  a| 10| 20| 30|
|  a| 10| 20| 30|
+---+---+---+---+

>>> cols = ['jan', 'feb', 'mar']
>>> df2000_dropped_col = reduce(lambda x,y: x.drop(y),cols,df2000)
>>> df2000_dropped_col.show()
+---+
|key|
+---+
|  a|
|  a|
|  a|
|  a|
+---+