Pyspark получает имена столбцов из фрейма данных типа Boolean - PullRequest
0 голосов
/ 30 сентября 2018

Я хочу сделать что-то вроде этого ... Если у меня есть 50 столбцов в моем фрейме данных, и я хочу получить только те, которые имеют логический тип данных.Как я могу это сделать?

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

Это печать пустая

1 Ответ

0 голосов
/ 30 сентября 2018

Вы можете использовать функцию выбора.

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()

UPDATED

, если вы хотите вызвать все столбцы, которые являются только целочисленными типами данных, вы можете использовать что-то вроде ниже

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