gpt4 book ai didi

Pyspark-将列表/元组传递给toDF函数

转载 作者:行者123 更新时间:2023-12-04 09:45:38 25 4
gpt4 key购买 nike

我有一个数据框,并想通过传递列表中的列名称使用toDF重命名它,这里的列列表是动态的,当我做下面的操作时遇到错误,我该如何实现呢?

>>> df.printSchema()
root
|-- id: long (nullable = true)
|-- name: string (nullable = true)
|-- dept: string (nullable = true)

columns = ['NAME_FIRST', 'DEPT_NAME']

df2 = df.toDF('ID', 'NAME_FIRST', 'DEPT_NAME')
(or)
df2 = df.toDF('id', columns[0], columns[1])

如果我们不知道输入数据帧中会有多少列,则此方法不起作用,因此要将列表传递给df2,我尝试如下
df2 = df.toDF('id', columns)
pyspark.sql.utils.IllegalArgumentException: u"requirement failed: The number of columns doesn't match.\nOld column names (3): id, name, dept\nNew column names (2): id, name_first, dept_name"

在这里,它将列表视为单个项目,如何传递列表中的列?

最佳答案

df2 = df.toDF(columns)不起作用,请添加*,如下所示-

columns = ['NAME_FIRST', 'DEPT_NAME']

df2 = df.toDF(*columns)

"*" is the "splat" operator: It takes a list as input, and expands it into actual positional arguments in the function call

关于Pyspark-将列表/元组传递给toDF函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43747723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com