我如何根据数组从数据帧中提取列,如果它找不到列,那么该列应该包含null值?-pyspark



我有一个名为"extractColumns";并且我有一个名为"0"的数据帧;raw_ data";。我想根据数组和数据帧创建一个新的数据帧。即使在进行";选择";,如果在数据帧中找不到列,则该列必须为NULL。

我该怎么做这个

raw_data  = spark.createDataFrame(
[
('1',20),
('2',34),
('3',12)
], ['foo','bar'])

#columns I want to extract from raw_dataframe
extractColumns = ['refsnp_id', 'chr_name', 'chrom_start', 'chrom_end', 'version']

import pyspark.sql.functions as F
new_raw_data = raw_data
for col in extractColumns:
if col not in raw_data.columns:
new_raw_data = new_raw_data.withColumn(col, F.lit(None))


new_raw_data.show()
+---+---+---------+--------+-----------+---------+-------+
|foo|bar|refsnp_id|chr_name|chrom_start|chrom_end|version|
+---+---+---------+--------+-----------+---------+-------+
|  1| 20|     null|    null|       null|     null|   null|
|  2| 34|     null|    null|       null|     null|   null|
|  3| 12|     null|    null|       null|     null|   null|
+---+---+---------+--------+-----------+---------+-------+

最新更新