![](/img/trans.png)
[英]Create a new column in dplyr by appending values to a list from other columns?
[英]Create a new column in Spark dataframe that is a list of other column values
我有一个名为“df”的数据框,其结构如下
ID | 姓名 | lv1 | lv2 |
---|---|---|---|
abb | 名称1 | 40.34 | 21.56 |
粑粑 | 名称2 | 21.30 | 67.45 |
巴巴 | 名称3 | 32.45 | 45.44 |
在 Pandas 中,我可以使用以下代码创建一个包含 lv1 和 lv2 值列表的新列
cols = ['lv1', 'lv2']
df['new_col'] = df[cols].values.tolist()
由于数据大小导致的内存问题,我现在使用 Databricks 代替(我以前从未使用过)并且需要复制上述内容。 我通过安装我的数据的位置然后加载成功创建了一个 Spark 数据框
file_location = 'dbfs:/mnt/<mountname>/filename.csv'
file_type = "csv"
infer_schema = "false"
first_row_is_header = "true"
delimiter = ","
df = spark.read.format(file_type)
.option("inferSchema", infer_schema)
.option("header", first_row_is_header)
.option("sep", delimiter)
.load(file_location)
display(df)
这会加载数据,但是,我不知道如何完成必要的下一步。 我在 Spark 中找到了一个名为struct
的函数,但是,我似乎在 PySpark 中找不到相应的函数。 有什么建议么?
它可能是您正在寻找的array
函数。
from pyspark.sql import functions as F
df = spark.createDataFrame(
[('abb', 'name1', 40.34, 21.56),
('bab', 'name2', 21.30, 67.45),
('bba', 'name3', 32.45, 45.44)],
['ID', 'name', 'lv1', 'lv2'])
df = df.withColumn('new_col', F.array('lv1', 'lv2'))
df.show()
# +---+-----+-----+-----+--------------+
# | ID| name| lv1| lv2| new_col|
# +---+-----+-----+-----+--------------+
# |abb|name1|40.34|21.56|[40.34, 21.56]|
# |bab|name2| 21.3|67.45| [21.3, 67.45]|
# |bba|name3|32.45|45.44|[32.45, 45.44]|
# +---+-----+-----+-----+--------------+
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.