如何在pyspark中求和?

如何在pyspark中求和?,pyspark,Pyspark,我有一个下表,我只想对列\u10和\u12求和,但我得到了一个错误 _2|_10|_12| +------+---+---+ |yearID| H| 3B| | 2004| 0| 0| | 2006| 0| 0| | 2007| 0| 0| | 2008| 0| 0| | 2009| 0| 0| | 2010| 0| 0| | 1954|131| 6| | 1955|189| 9| | 1956|200| 14| | 1957|198| 6|

我有一个下表,我只想对列
\u10
\u12
求和,但我得到了一个错误

 _2|_10|_12|
+------+---+---+
|yearID|  H| 3B|
|  2004|  0|  0|
|  2006|  0|  0|
|  2007|  0|  0|
|  2008|  0|  0|
|  2009|  0|  0|
|  2010|  0|  0|
|  1954|131|  6|
|  1955|189|  9|
|  1956|200| 14|
|  1957|198|  6|
|  1958|196|  4|
|  1959|223|  7|
|  1960|172| 11|
|  1961|197| 10|
|  1962|191|  6|
|  1963|201|  4|
|  1964|187|  2|
|  1965|181|  1|
|  1966|168|  1|
|  1967|184|  3|
|  1968|174|  4|
|  1969|164|  3|
|  1970|154|  1|
|  1971|162|  3|
|  1972|119|  0|
|  1973|118|  1|
|  1974| 91|  0|
|  1975|109|  2|
|  1976| 62|  0|

我不知道你说的总和是什么意思。若您的意思是对整列的值求和,那个么可以使用agg函数。或者,如果您想要像_10+_12那样求和并创建一个新列,则使用withColumn函数

>>> data = sc.parallelize([
...     ('yearID','H','3B'),
...     ('2004','0','0'),
...     ('2006','0','0'),
...     ('2007','0','0'),
...     ('2008','0','0'),
...     ('2009','0','0'),
...     ('2010','0','0'),
...     ('1954','131','6'),
...     ('1955','189','9'),
...     ('1956','200','14'),
...     ('1957','198','6')
...     ])
>>> 
>>> cols = ['_2','_10','_12']
>>> 
>>> df = spark.createDataFrame(data,cols)
18/10/01 04:22:48 WARN ObjectStore: Failed to get database global_temp, returning NoSuchObjectException
>>> 
>>> df.show()
+------+---+---+
|    _2|_10|_12|
+------+---+---+
|yearID|  H| 3B|
|  2004|  0|  0|
|  2006|  0|  0|
|  2007|  0|  0|
|  2008|  0|  0|
|  2009|  0|  0|
|  2010|  0|  0|
|  1954|131|  6|
|  1955|189|  9|
|  1956|200| 14|
|  1957|198|  6|
+------+---+---+

>>> df.agg({'_10':'sum','_12':'sum'}).show()
+--------+--------+
|sum(_12)|sum(_10)|
+--------+--------+
|    35.0|   718.0|
+--------+--------+

>>> df.withColumn('new_col', df['_10']+df['_12']).show()
+------+---+---+-------+
|    _2|_10|_12|new_col|
+------+---+---+-------+
|yearID|  H| 3B|   null|
|  2004|  0|  0|    0.0|
|  2006|  0|  0|    0.0|
|  2007|  0|  0|    0.0|
|  2008|  0|  0|    0.0|
|  2009|  0|  0|    0.0|
|  2010|  0|  0|    0.0|
|  1954|131|  6|  137.0|
|  1955|189|  9|  198.0|
|  1956|200| 14|  214.0|
|  1957|198|  6|  204.0|
+------+---+---+-------+

你犯了什么错误?如果你能发布你的代码也会很有帮助。请阅读并编辑相应的问题。你能帮助我如何保存输出吗?你想保存在哪里?保存到文件还是数据库?如果是文件,您希望使用什么格式?csv,拼花。。等等?我想把输出保存在普通文本文件中。那么我们如何保存为文本文件呢