如何在数据框选择中添加中间列?
Posted
技术标签:
【中文标题】如何在数据框选择中添加中间列?【英文标题】:How to add intermediate columns in dataframe selections? 【发布时间】:2019-10-07 16:40:03 【问题描述】:使用带有 spark-shell 的 Spark 2.2,并尝试 toDF
和 toDS
。
case class Person(name: String, age: Long)
val df = Seq( Person("Michael", 0), Person("Andy", 30), Person("Justin", 19) ).toDS()
这工作正常:
df.select("age", "name").show
df.select("age", "name").withColumn("foo",lit("-")).show
但使用this syntax 不起作用:
df.select( "age", lit("-").as("foo"), "name" ).show
如何使用列函数或列常量?
我需要更改列的顺序并添加一些中间列。
【问题讨论】:
您可以使用 withColumn 然后选择以获得正确的顺序 @firsni,是的,看起来很优雅的解决方案(!),您可以发布作为答案...或者我可以删除这个“for dummy”问题 【参考方案1】:使用示例并假设 spark-shell 上下文,此查询解决了问题:
df.withColumn("foo",lit("-")). select("name","foo","age")
【讨论】:
我的 spark-shell 上的一些错误。 “错误:未找到:值名称”,必须使用select("name")
而不是 select(name)
。 "cannot resolve 'foo
' given input columns",必须使用withColumn("foo",lit("-"))
而不是withColumn("age",lit("-").as("Foo"))
。
解决方案是df.withColumn("foo",lit("-")). select ("name","foo","age")
好的,因为我用的是手机。我不知道你想要的顺序。谢谢以上是关于如何在数据框选择中添加中间列?的主要内容,如果未能解决你的问题,请参考以下文章
如果用户写入超过 1 列,如何从 Shiny 的数据框中选择列?
如何在 pandas 的数据框中选择多个日期列,然后将它们全部格式化? (Python)