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

Pyspark get names of the column from a data frame of data type Boolean

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

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

这是打印空白

您可以使用select函数

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

如果列的数据类型是字符串,并且您想 select 将其转换为整数,则可以将其转换为整数

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

或者您可以创建临时 table 并使用 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|
+---+---+