我想做这样的事情... 如果我的数据框中有50列,而我只想获取具有布尔数据类型的列。我怎么做?
for name,dtype in df.dtypes:
if dtype is 'Boolean':
print(name)
这是空白打印
答案 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|
+---+---+