Pyspark从数据类型为Boolean的数据框中获取列的名称

时间:2018-09-30 16:28:02

标签: pyspark pyspark-sql

我想做这样的事情... 如果我的数据框中有50列,而我只想获取具有布尔数据类型的列。我怎么做?

  for name,dtype in df.dtypes:
    if dtype is 'Boolean':
      print(name)

这是空白打印

1 个答案:

答案 0 :(得分:1)

您可以使用选择功能

df.select('column_name').show()

如果列的数据类型为字符串,并且想要将其选择为整数,则可以将其强制转换为整数

df.select(df.column_name.cast('integer')).show()

或者您可以创建一个临时表并使用SQL

df.registerTempTable('table1')
spark.sql('select column_name from table1').show()

已更新

如果您要仅调用整数数据类型的所有列,则可以使用以下内容

>>> data = sc.parallelize([(1,'a',3.5,8,True)])
>>> cols = ['c1','c2','c3','c4','c5']
>>> 
>>> df = spark.createDataFrame(data,cols)
>>> df.show()
+---+---+---+---+----+
| c1| c2| c3| c4|  c5|
+---+---+---+---+----+
|  1|  a|3.5|  8|true|
+---+---+---+---+----+
>>> df.dtypes
[('c1', 'bigint'), ('c2', 'string'), ('c3', 'double'), ('c4', 'bigint'), ('c5', 'boolean')]
>>> [i[0] for i in df.dtypes if 'int' in i[1]]
['c1', 'c4']
>>> df.select([i[0] for i in df.dtypes if 'int' in i[1]]).show()
+---+---+
| c1| c4|
+---+---+
|  1|  8|
+---+---+