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|
+---+---+
我想做这样的事情... 如果我的数据框中有 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|
+---+---+