Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.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
跨列组合值以及pyspark和旋转_Pyspark_Pivot - Fatal编程技术网

跨列组合值以及pyspark和旋转

跨列组合值以及pyspark和旋转,pyspark,pivot,Pyspark,Pivot,我有一个像这样的pypark df: +-------+-------+-----------+-----------+-----------+-----------+-----------+-----------+ | SEQ_ID|TOOL_ID|kurtosis_1m|kurtosis_2m|kurtosis_3m|kurtosis_4m|kurtosis_5m|kurtosis_6m| +-------+-------+-----------+-----------+----------

我有一个像这样的pypark df:

+-------+-------+-----------+-----------+-----------+-----------+-----------+-----------+
| SEQ_ID|TOOL_ID|kurtosis_1m|kurtosis_2m|kurtosis_3m|kurtosis_4m|kurtosis_5m|kurtosis_6m|
+-------+-------+-----------+-----------+-----------+-----------+-----------+-----------+
|3688539|  99725|     6.7484|     6.2753|     6.2055|     7.2076|     7.0501|     7.5099|
|3689076|  99705|     4.8109|     4.3774|     4.1131|     4.4084|     4.1568|     4.4445|
+-------+-------+-----------+-----------+-----------+-----------+-----------+-----------+
我需要以这样一种方式对其进行透视,以得到如下数据帧:

+-------+-------+-----------+
| SEQ_ID|TOOL_ID|kurtosis   |
+-------+-------+-----------+
|3688539|  99725|     6.7484|
|3688539|  99725|     6.2753|
|3688539|  99725|     6.2055|
|3688539|  99725|     7.2076|
|3688539|  99725|     7.0501|
|3688539|  99725|     7.5099|
|3689076|  99705|     4.8109|
|3689076|  99705|     4.3774|
|3689076|  99705|     4.1131|
|3689076|  99705|     4.4084|
|3689076|  99705|     4.1568|
|3689076|  99705|     4.4445|
+-------+-------+-----------+
我想一种方法是将峰度列创建为数组列,然后将其分解。如何将一个数据帧中的列的值作为一个数组组合成一个列。 我还有其他的专栏,比如mean_1m,mean_2m等等。。。我需要以同样的方式旋转。 有什么见解吗? 谢谢

您可以创建一个数据帧数组并合并它们

首先,确定峰度列:

现在创建一个数据帧数组,其数量等于峰度列的数量:

输出:

+-------+-------+--------+
| seq_id|tool_id|kurtosis|
+-------+-------+--------+
|3688539|  99725|  6.7484|
|3688539|  99725|  7.2076|
|3688539|  99725|  6.2753|
|3688539|  99725|  6.2055|
|3688539|  99725|  7.5099|
|3688539|  99725|  7.0501|
|3689076|  99705|  4.4084|
|3689076|  99705|  4.1131|
|3689076|  99705|  4.8109|
|3689076|  99705|  4.4445|
|3689076|  99705|  4.3774|
|3689076|  99705|  4.1568|
+-------+-------+--------+
您可以对其他集合列(如mean_1m等)采用类似的方法。将它们重新联接并避免重复的一种方法是在联接之前使用row_number和单调递增的_id。如果您需要这段代码,请告诉我。

您可以创建一个数据帧数组并合并它们

首先,确定峰度列:

现在创建一个数据帧数组,其数量等于峰度列的数量:

输出:

+-------+-------+--------+
| seq_id|tool_id|kurtosis|
+-------+-------+--------+
|3688539|  99725|  6.7484|
|3688539|  99725|  7.2076|
|3688539|  99725|  6.2753|
|3688539|  99725|  6.2055|
|3688539|  99725|  7.5099|
|3688539|  99725|  7.0501|
|3689076|  99705|  4.4084|
|3689076|  99705|  4.1131|
|3689076|  99705|  4.8109|
|3689076|  99705|  4.4445|
|3689076|  99705|  4.3774|
|3689076|  99705|  4.1568|
+-------+-------+--------+
您可以对其他集合列(如mean_1m等)采用类似的方法。将它们重新联接并避免重复的一种方法是在联接之前使用row_number和单调递增的_id。如果您需要这段代码,请告诉我。

您可以使用将多个列合并到一个数组中,然后(如您在问题中所述)数组

从pyspark.sql导入函数为F cols=[x代表df.schema.names中的x,如果峰度在x中] df.带柱峰度,F.爆炸F.阵列色\ .drop*cols\ 显示 输出:

+-------+-------+--------+
| seq_id|tool_id|kurtosis|
+-------+-------+--------+
|3688539|  99725|  6.7484|
|3688539|  99725|  7.2076|
|3688539|  99725|  6.2753|
|3688539|  99725|  6.2055|
|3688539|  99725|  7.5099|
|3688539|  99725|  7.0501|
|3689076|  99705|  4.4084|
|3689076|  99705|  4.1131|
|3689076|  99705|  4.8109|
|3689076|  99705|  4.4445|
|3689076|  99705|  4.3774|
|3689076|  99705|  4.1568|
+-------+-------+--------+
+----+----+----+ |序列号|工具号|峰度| +----+----+----+ |3688539| 99725| 6.7484| |3688539| 99725| 6.2753| |3688539| 99725| 6.2055| |3688539| 99725| 7.2076| |3688539| 99725| 7.0501| |3688539| 99725| 7.5099| |3689076| 99705| 4.8109| |3689076| 99705| 4.3774| |3689076| 99705| 4.1131| |3689076| 99705| 4.4084| |3689076| 99705| 4.1568| |3689076| 99705| 4.4445| +----+----+----+ 您可以使用将多个列组合到一个数组中,然后(如您在问题中所述)将该数组

从pyspark.sql导入函数为F cols=[x代表df.schema.names中的x,如果峰度在x中] df.带柱峰度,F.爆炸F.阵列色\ .drop*cols\ 显示 输出:

+-------+-------+--------+
| seq_id|tool_id|kurtosis|
+-------+-------+--------+
|3688539|  99725|  6.7484|
|3688539|  99725|  7.2076|
|3688539|  99725|  6.2753|
|3688539|  99725|  6.2055|
|3688539|  99725|  7.5099|
|3688539|  99725|  7.0501|
|3689076|  99705|  4.4084|
|3689076|  99705|  4.1131|
|3689076|  99705|  4.8109|
|3689076|  99705|  4.4445|
|3689076|  99705|  4.3774|
|3689076|  99705|  4.1568|
+-------+-------+--------+
+----+----+----+ |序列号|工具号|峰度| +----+----+----+ |3688539| 99725| 6.7484| |3688539| 99725| 6.2753| |3688539| 99725| 6.2055| |3688539| 99725| 7.2076| |3688539| 99725| 7.0501| |3688539| 99725| 7.5099| |3689076| 99705| 4.8109| |3689076| 99705| 4.3774| |3689076| 99705| 4.1131| |3689076| 99705| 4.4084| |3689076| 99705| 4.1568| |3689076| 99705| 4.4445| +----+----+----+
我认为使用内置的pyspark数组函数可能更容易。感谢您的解决方案Cena。我真的很感激!我认为使用内置的pyspark数组函数可能更容易。感谢您的解决方案Cena。我真的很感激!x中的if字符串拾取所有带字母的单词。我如何让它选择准确的单词?例如,若x中的“UL”选择了名为UL和MUL的列,我只希望它选择UL@thentangler用==替换in,就像在正常if条件下一样。可以找到一些示例,x中的if字符串拾取所有带字母的单词。我如何让它选择准确的单词?例如,若x中的“UL”选择了名为UL和MUL的列,我只希望它选择UL@thentangler用==替换in,就像在正常if条件下一样。可以找到一些例子