python - 如何在 pyspark 数据框中将变量值分配为新列值?
问题描述
我正在为从数据框中获取的变量赋值,如下所示:
dfScore = spark.read.format("csv").option("header", "true").load("data.csv")
level = dfScore.where((col("Name") == "Rule1")).select(dfScore ["level"])
然后我有另一个数据框,我必须添加这个级别变量值:
dfJson = spark.read.format("json").load("/mnt/coi/Rule/Rule1.json")
ScoreCal1 = dfJson.where((dfJson["Amount"] > 20000)).select(dfJson["*"])
所以我想在数据框中创建一个新列并将级别变量分配为新列值。我正在按照以下方式这样做,但没有成功:
ScoreCal1 = ScoreCal1.withColumn("Level",lit(level)))
如何在 pyspark 数据框中将变量分配为新列值?
解决方案
从您的代码中我注意到,级别似乎是数据框而不是变量。因此它会引发错误。
由于您指定如下,它只返回数据框而不是变量:
level =dfScore .where((col("DataField") == "Amount")).select(dfScore ["level"])
但是,我从您的代码中了解到,如果它满足以下条件 col("DataField") == "Amount" 否则为 Null,您希望使用旧列级别的值为新列“级别”分配值。如果是这样,您可以使用 when 条件编写代码,如下所示:
ScoreCal1 = ScoreCal1.withColumn("Level",when(col("DataField") == "Amount",dfScore ["level"]))
推荐阅读
- python - 如何获取 2D numpy 数组中所有行的对角线?
- c# - 在方法中有返回内容的定义的方法中不返回任何内容
- laravel - 如何使用 if 条件计算 v-for 对象
- php - 将数据保存到多态关系laravel中的问题
- flutter - 如何将MD5转换回图像?
- javascript - 在 switch JS Google Chart 中使用输入值
- r - 选择数据框中的特殊行
- flutter - DropdownButtonFormField 没有得到重建
- entity-framework - 从数据库更新模型不更新元数据
- asp.net-mvc - 如何从get中获取数据并将其发布?手柄输入电台类型