我有一个名为"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|
+---+---+---------+--------+-----------+---------+-------+