如果我有表
|a | b | c|
|"hello"|"world"| 1|
并且变量
start =2000
end =2015
如何在pyspark中添加15列,第一列为m2000,第二列为m2001等,所有这些新列都为0,因此新 Dataframe 为
|a | b | c|m2000 | m2001 | m2002 | ... | m2015|
|"hello"|"world"| 1| 0 | 0 | 0 | ... | 0 |
我已经试过下面但是
df = df.select(
'*',
*["0".alias(f'm{i}') for i in range(2000, 2016)]
)
df.show()
我收到错误
AttributeError: 'str' object has no attribute 'alias'
4条答案
按热度按时间ha5z0ras1#
您可以简单地使用
withColumn
添加相关列。vatpfxk52#
您可以使用一行程序
完整示例:
brccelvz3#
在
pandas
中,可以执行以下操作:我不是很熟悉Spark合成器,但方法应该是几乎相同的。
正在发生的情况:术语
['m{}'.format(x) for x in range(2000, 2016)]
是一个列表理解,它创建了所需列名的列表。我们将值0赋给这些列。由于这些列尚不存在,因此添加它们。2cmtqfgy4#
生成额外列的代码非常好-只需将
"0"
Package 在lit
函数中,如下所示:重复调用
withColumn
方法要谨慎--每次新调用它都会在Spark的查询执行计划中创建一个新的投影,这会导致计算开销非常大。