Как получить имя столбца dataframe в pyspark?

В pandas это можно сделать с помощью column.name.

Но как сделать то же самое, когда его колонка искроберической рамки?

например. Вызывающая программа имеет блок данных искры: spark_df

>>> spark_df.columns
['admit', 'gre', 'gpa', 'rank']

Эта программа вызывает мою функцию: my_function (spark_df ['rank']) В my_function мне нужно имя столбца i.e. 'rank'

Если это был pandas dataframe, мы можем использовать внутри my_function

>>> pandas_df['rank'].name
'rank'

Ответ 1

Вы можете получить имена из схемы, выполнив

spark_df.schema.names

Печать схемы может быть полезна и для визуализации.

spark_df.printSchema()

Ответ 2

Единственный способ - перейти на базовый уровень для JVM.

df.col._jc.toString().encode('utf8')

Это также то, как он преобразуется в str в самом pyspark-коде.

Из pyspark/sql/column.py:

def __repr__(self):
    return 'Column<%s>' % self._jc.toString().encode('utf8')

Ответ 3

Если вам нужны имена столбцов вашего фрейма данных, вы можете использовать класс pyspark.sql. Я не уверен, поддерживает ли SDK явную индексацию DF по имени столбца. Я получил эту трассировку:

>>> df.columns['High'] Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: list indices must be integers, not str

Тем не менее, вызов метода столбцов в вашем фрейме данных, который вы сделали, вернет список имен столбцов:

df.columns вернет ['Date', 'Open', 'High', 'Low', 'Close', 'Volume', 'Adj Close']

Если вам нужны типы данных столбцов, вы можете вызвать метод dtypes:

df.dtypes вернет [('Date', 'timestamp'), ('Open', 'double'), ('High', 'double'), ('Low', 'double'), ('Close', 'double'), ('Volume', 'int'), ('Adj Close', 'double')]

Если вам нужен определенный столбец, вам нужно получить к нему доступ по индексу:

df.columns[2] вернет 'High'

Ответ 4

Я нашел ответ очень очень просто...

// It is in java, but it should be same in pyspark
Column col = ds.col("colName"); //the column object
String theNameOftheCol = col.toString();

Переменная "theNameOftheCol" - это "colName"