how to select all columns that starts with a common label
我在Spark1.6中有一个数据框架,想要从中选择一些列。列名如下:
1 | colA, colB, colC, colD, colE, colF-0, colF-1, colF-2 |
我知道我可以这样做来选择特定的列:
1 | df.select("colA","colB","colE") |
但是如何同时选择"cola"、"colb"和所有colf-*列呢?熊猫有什么办法吗?
首先用
1 | df.select(df.columns.filter(_.startsWith("colF")).map(df(_)) : _*).show |
这个过滤器可以变得更复杂(和熊猫一样)。然而,这是一个相当丑陋的解决方案(IMO):
1 | df.select(df.columns.filter(x => (x.equals("colA") || x.startsWith("colF"))).map(df(_)) : _*).show |
如果其他列的列表是固定的,则还可以将列名称的固定数组与筛选数组合并。
1 | df.select((Array("colA","colB") ++ df.columns.filter(_.startsWith("colF"))).map(df(_)) : _*).show |