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

Pyspark从数据类型为Boolean的数据框中获取列的名称,pyspark,pyspark-sql,Pyspark,Pyspark Sql,我想做这样的事。。。 如果我的数据框中有50列,并且我只想得到具有布尔数据类型的列。我该怎么做 for name,dtype in df.dtypes: if dtype is 'Boolean': print(name) 这是打印空白您可以使用选择功能 df.select('column_name').show() 若列的数据类型为string,并且希望将其选择为整数,则可以将其强制转换为整数 df.select(df.column_name.cast('integ

我想做这样的事。。。 如果我的数据框中有50列,并且我只想得到具有布尔数据类型的列。我该怎么做

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

这是打印空白

您可以使用选择功能

df.select('column_name').show()
若列的数据类型为string,并且希望将其选择为整数,则可以将其强制转换为整数

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|
+---+---+

我有几个数据类型的变量,比如string,int,但我只想选择int作为数据类型的变量谢谢!工作起来像个魔术师,而不是
=
=
测试是否相等,而
=
用于变量赋值,这非常有效