如何通过其编号而不是名称选择数据框中的列

Posted

技术标签:

【中文标题】如何通过其编号而不是名称选择数据框中的列【英文标题】:How to select a column in a dataframe by its number instead of its name 【发布时间】:2019-11-04 15:55:21 【问题描述】:

我想在 Spark 数据框中按其编号而不是名称来选择一个列。有可能吗?

谢谢

【问题讨论】:

看这里。***.com/questions/51689460/… 首先导入 spark 隐式,它作为一个帮助类使用 $-notation 来访问使用位置索引的列import spark.implicits._ import org.apache.spark.sql.functions._ val child3_DF = parentDF.select("_c0","_c1","_c2","_c8","_c9").show() 我在发布之前已经尝试过了,但它对我不起作用。它查找名为“_c0”的列。线程“主”org.apache.spark.sql.AnalysisException 中的异常:无法解析给定输入列的“_c0”:[meterid、qewr、nevents、fasf、adfet];; '项目 ['_c0, '_c1] +- 关系[meterid#105,nevents#106,adfet#107,qewr#108,fasf#109] JDBCRelation(meterproperties) [numPartitions=1] 【参考方案1】:

如果你想为此编写自己的方法,你可以这样做:

package utils

object Extensions 
    implicit class DataFrameExtensions(df: DataFrame) 
        def selecti(indices: Int*) = 
            val cols = df.columns
            df.select(indices.map(cols(_)):_*)
        
    

现在您可以导入并使用此方法:

import utils.Extensions._

df.selecti(1,2,3)

【讨论】:

以上是关于如何通过其编号而不是名称选择数据框中的列的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ggplot 中创建一个图例,将名称和颜色分配给列而不是数据框列中的值?

如何在数据框名称而不是列中查找字符串?

如何从python中的pandas数据框中的列中提取关键字(字符串)

如何从熊猫数据框中的列中删除字符串值

如何从包含文本的熊猫数据框中的列中提取年份(或日期时间)

如何在熊猫数据框中的所有列中搜索模式,并在找到时将其复制到另一列