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