use*_*791 12 scala apache-spark spark-dataframe
我在Spark 1.6中有一个数据框,并希望从中选择一些列.列名称如下:
colA, colB, colC, colD, colE, colF-0, colF-1, colF-2
Run Code Online (Sandbox Code Playgroud)
我知道我可以这样做来选择特定的列:
df.select("colA", "colB", "colE")
Run Code Online (Sandbox Code Playgroud)
但如何选择,一次说"colA","colB"和所有colF-*列?有没有像熊猫一样的方式?
Mic*_*mlk 22
首先获取列名称df.columns,然后向下过滤到您想要的列名称.filter(_.startsWith("colF")).这为您提供了一系列字符串.但选择需要select(String, String*).幸运的是,选择列是select(Column*),所以最后将字符串转换为列,最后将列.map(df(_))数组转换为var arg : _*.
df.select(df.columns.filter(_.startsWith("colF")).map(df(_)) : _*).show
Run Code Online (Sandbox Code Playgroud)
这个过滤器可以变得更复杂(与Pandas相同).然而,它是一个相当丑陋的解决方案(IMO):
df.select(df.columns.filter(x => (x.equals("colA") || x.startsWith("colF"))).map(df(_)) : _*).show
Run Code Online (Sandbox Code Playgroud)
如果修复了其他列的列表,您还可以将固定的列名称数组与已过滤的数组合并.
df.select((Array("colA", "colB") ++ df.columns.filter(_.startsWith("colF"))).map(df(_)) : _*).show
Run Code Online (Sandbox Code Playgroud)
Eug*_*nok 13
Python(在 Azure Databricks 中测试)
selected_columns = [column for column in df.columns if column.startswith("colF")]
df2 = df.select(selected_columns)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12723 次 |
| 最近记录: |