Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何添加多个整列值并创建单个列_Python_Pyspark_Apache Spark Sql - Fatal编程技术网

Python 如何添加多个整列值并创建单个列

Python 如何添加多个整列值并创建单个列,python,pyspark,apache-spark-sql,Python,Pyspark,Apache Spark Sql,是否有任何函数可用于添加多个整列值和创建新列 例如:多个计数到单个总计数列 我希望concat只适用于字符串列。有两种简单的方法。第一种是简单地使用+并键入列名,另一种是使用add和reduce的组合一次对多个列求和 下面是一个示例,其中显示了两种方法来计算名称中包含x的所有列的总和(因此我们不包括列y1的总计) 希望这有帮助 import pyspark.sql.functions as F import pandas as pd # SAMPLE DATA ----------------

是否有任何函数可用于添加多个整列值和创建新列

例如:多个计数到单个总计数列


我希望concat只适用于字符串列。

有两种简单的方法。第一种是简单地使用
+
并键入列名,另一种是使用
add
reduce
的组合一次对多个列求和

下面是一个示例,其中显示了两种方法来计算名称中包含
x
的所有列的总和(因此我们不包括列
y1
的总计)

希望这有帮助

import pyspark.sql.functions as F
import pandas as pd

# SAMPLE DATA -----------------------------------------------------------------------
df = pd.DataFrame({'x1': [0,0,0,1,1],
                   'x2': [6,5,4,3,2],
                   'x3': [2,2,2,2,2],
                   'y1': [1,1,1,1,1]})
df = spark.createDataFrame(df)

# Sum by typing the column names explicitly
df = df.withColumn('total_1',F.col('x1') + F.col('x2') + F.col('x3'))

# Sum many columns without typing them out using reduce
import operator
import functools
cols_to_sum = [col for col in df.columns if 'x' in col] 
df = df.withColumn('total_2',functools.reduce(operator.add, [F.col(x) for x in cols_to_sum]))

df.show()
输出:

+---+---+---+---+-------+-------+
| x1| x2| x3| y1|total_1|total_2|
+---+---+---+---+-------+-------+
|  0|  6|  2|  1|      8|      8|
|  0|  5|  2|  1|      7|      7|
|  0|  4|  2|  1|      6|      6|
|  1|  3|  2|  1|      6|      6|
|  1|  2|  2|  1|      5|      5|
+---+---+---+---+-------+-------+