【发布时间】:2021-12-01 11:12:07
【问题描述】:
问题看似简单,却找不到简单的解决方法。
我正在尝试在selectExpr 中动态创建新列,但它不接受列表作为参数。实现它的最佳方法是什么? (多个withColumn 不是一个选项,因为stackoverflowexception
输入:
a | b
-------
1 | zzz
2 | xxx
试过这样的
sample_new_cols = {"s":"ran-s",
"ts": "current_timestamp()",
}
df = df.selectExpr('*',
[
f"{definition} as {name}"
for name, definition in sample_new_cols.items()
]
)
它的输出是
a | b | s | ts
------------|-----------
1 |zzz|ran-s|2021-12-01 08:10:21
2 |xxx|ran-s|2021-12-01 08:10:21
【问题讨论】:
标签: python apache-spark pyspark apache-spark-sql