PySpark:使用Dinamic名称对更多列求和

PySpark:使用Dinamic名称对更多列求和,pyspark,sum,Pyspark,Sum,我有这样的想法: +------+------+--------------+---------------+--------------+---------------+--------------+ | A .....|.. B ..|2019-01-31|2019-02-28|2019-03-31|2019-04-30|2019-05-31| +------+------+--------------+---------------+--------------+----------

我有这样的想法:

+------+------+--------------+---------------+--------------+---------------+--------------+

|  A .....|.. B ..|2019-01-31|2019-02-28|2019-03-31|2019-04-30|2019-05-31|

+------+------+--------------+---------------+--------------+---------------+--------------+

|11125 |SL15|  15.0    |   12.0   |    1.0   |    0.0   |    0.0   |

|20047 |SL20|   7.0    |   13.0   |    1.0   |    0.0   |    0.0   |

|35858 |SL25|   8.0    |    0.0   |    1.0   |    0.0   |    0.0   |
我正在创建一个计算字段,如newfield,它汇总了第3列到第7列(5个月)。 我的问题是列具有动态名称。 这个月的列名与下个月的列名不同,但始终位于准确的位置。(固定在flow中,必须位于位置3的正确列将在下个月位于位置3,只有名称在更改)

这意味着每个月我都会总结3到7列

范例 如果我分配第一个变量如colH1=F.col(“2019-01-31”),第二个变量如colH2=F.col(“2019-02-28”),我可以在它们之间进行数学运算。
新的计算列如下所示:df=df.withColumn('New_column',((colH1)+(colH2)))

需要更改的是colH1=F.col(“2019-01-31”)的赋值,因为(“2019-01-31”)是本月DF中第3位列的固定名称,但名称将在下个月更改。我需要计算“位置3”

我不能使用df.select,因为这个操作只是选择确切的列,但是我无法将它连接回原始df-没有用于连接的唯一键


我希望这能解释我的需求,但不能找到解决这种情况的方法。

根据列索引获取列名并存储到变量中。您可以通过下面的代码根据列索引获取列名

df.列(索引)

在下面的代码中传递变量

df=df.withColumn('new_column',((var1)+(var2)))