Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.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 PySpark:从列中提取/收集第一个数组元素_Python_Arrays_Apache Spark_Pyspark - Fatal编程技术网

Python PySpark:从列中提取/收集第一个数组元素

Python PySpark:从列中提取/收集第一个数组元素,python,arrays,apache-spark,pyspark,Python,Arrays,Apache Spark,Pyspark,我有一个看起来像 |-- alleleFrequencies: array (nullable = true) | |-- element: double (containsNull = true) 元素是一个双精度数组 我希望将这些数据放入一个numpy数组中,我很天真地这样做了: allele_freq1 = np.array(df1.select("alleleFrequencies").collect()) 但这给了 [[list([0.5, 0.5])] [list([

我有一个看起来像

 |-- alleleFrequencies: array (nullable = true)
 |    |-- element: double (containsNull = true)
元素
是一个双精度数组

我希望将这些数据放入一个
numpy
数组中,我很天真地这样做了:

allele_freq1 = np.array(df1.select("alleleFrequencies").collect())
但这给了

[[list([0.5, 0.5])]
 [list([0.5, 0.5])]
 [list([1.0])]...
这不是我想要的一个简单的一维数组

我也试过了

allele_freq1 = np.array(df1.select("alleleFrequencies")[0].collect())
allele_freq1 = np.array(df1.select("alleleFrequencies[0]").collect())
但这给了

TypeError: 'Column' object is not callable
org.apache.spark.sql.AnalysisException: cannot resolve '`alleleFrequencies[0]`' given input columns...
我也试过了

allele_freq1 = np.array(df1.select("alleleFrequencies")[0].collect())
allele_freq1 = np.array(df1.select("alleleFrequencies[0]").collect())
但这给了

TypeError: 'Column' object is not callable
org.apache.spark.sql.AnalysisException: cannot resolve '`alleleFrequencies[0]`' given input columns...
如何将列
中的第一项放入
numpy
数组中


我检查过了,但我不知道那里的解决方案如何适用于我的情况

您第一次给出的@pault的可能副本给出了一个错误,它无法解析列名,并且您给出的链接没有提供任何有用的信息确定然后使用
pyspark.sql.functions.col
getItem
(如我给出的链接所示):
np.array(df1.select(col(“等位基因频率”).getItem(0)).collect())
。没有有用的信息是一个相当宽泛的陈述。谢谢@pault最后一条评论
pyspark.sql.functions.col:np.array(df1.select(col(“allegerefrequencies”).getItem(0)).collect()
完成了任务这正是我链接的副本中包含的内容。我打赌
selectExpr
可能在这里也能工作:
np.array(df1.selectExpr(“等位频率[0]”)collect())
allele_freq1 = np.array(df1.select(col("alleleFrequencies").getItem(0)).collect())
print(allele_freq1)
print(type(allele_freq1))