Ответ 1
Вы можете получить имена из схемы, выполнив
spark_df.schema.names
Печать схемы может быть полезна и для визуализации.
spark_df.printSchema()
В 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'
Вы можете получить имена из схемы, выполнив
spark_df.schema.names
Печать схемы может быть полезна и для визуализации.
spark_df.printSchema()
Единственный способ - перейти на базовый уровень для JVM.
df.col._jc.toString().encode('utf8')
Это также то, как он преобразуется в str
в самом pyspark-коде.
Из pyspark/sql/column.py:
def __repr__(self):
return 'Column<%s>' % self._jc.toString().encode('utf8')
Если вам нужны имена столбцов вашего фрейма данных, вы можете использовать класс 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'
Я нашел ответ очень очень просто...
// 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"