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)))