【发布时间】:2022-01-03 14:39:52
【问题描述】:
我正在尝试向我的数据集添加一个额外的新假数据列。以这个为例(数据框是什么并没有什么区别——我需要一个新的额外列,具有唯一的假名称;这只是一个可以玩的假人):
from faker import Faker
faker = Faker("en_GB")
profiles = [faker.profile() for i in range(0, 100)]
profiles = spark.createDataFrame(profiles)
我正在尝试添加一个新的名字列,每行一个名字。目前,我正在这样做(我知道这不会做我想要的,但我不知道还能做什么):
profiles = profiles.withColumn('first_name', lit([faker.first_name()] for _ in 'name'))
但是,我不断收到此错误:
java.lang.RuntimeException: 不支持的文字类型类 java.util.ArrayList [[Robin], [Margaret], [Robin], [Victor]] 我想将其保留为一行,因为这是我需要进行进一步分析的内容。
我想我明白为什么我会收到错误,但我不知道该怎么办......任何想法都值得赞赏!
【问题讨论】:
-
您的预期输出是什么?目前,您正在尝试将值
[[Robin], [Margaret], [Robin], [Victor]](字符串数组的数组)添加到数据帧的每一行。 -
我希望将 Robin、Margaret 等分别添加到数据框中的单独行中(编辑后添加)
-
名称是随机生成的,您必须在
name列上使用split并取名字,但请注意,某些名称可以采用以下格式:Mrs Carole Price。所以仅仅在空间上分割并取第一个元素是行不通的。 -
她需要类似:
profiles = profiles.withColumn("first_name", F.lit(faker.first_name()))。但问题在于faker.first_name()被评估一次,并且会为所有行生成相同的名字。
标签: python apache-spark pyspark faker