Kau*_*rya 30 pyspark pyspark-sql
在pandas中,这可以通过column.name来完成.
但是当它的火花数据帧列如何做同样的事情?
例如,调用程序有一个spark数据帧:spark_df
>>> spark_df.columns
['admit', 'gre', 'gpa', 'rank']
Run Code Online (Sandbox Code Playgroud)
这个程序调用我的函数:my_function(spark_df ['rank'])在my_function中,我需要列的名称即'rank'
如果是pandas数据帧,我们可以在my_function中使用
>>> pandas_df['rank'].name
'rank'
Run Code Online (Sandbox Code Playgroud)
Dav*_*vid 51
您可以通过执行从架构中获取名称
spark_df.schema.names
Run Code Online (Sandbox Code Playgroud)
打印模式对于可视化也很有用
spark_df.printSchema()
Run Code Online (Sandbox Code Playgroud)
Ces*_*aro 11
根据具体情况而定:
无别名列: column._jc.toString()已经可以正常工作(感谢@numeral)。
别名列:(即column.alias("whatever"))可以提取别名:
Python
str(column).split(" AS ")[1].split("`")[1]
Run Code Online (Sandbox Code Playgroud)
斯卡拉
str(column).split(" AS ")(1).split("`")(1)
Run Code Online (Sandbox Code Playgroud)
唯一的方法是将底层级别转移到JVM.
df.col._jc.toString().encode('utf8')
Run Code Online (Sandbox Code Playgroud)
这也是它str在pyspark代码中转换为a 的方式.
从pyspark/sql/column.py:
def __repr__(self):
return 'Column<%s>' % self._jc.toString().encode('utf8')
Run Code Online (Sandbox Code Playgroud)
小智 5
如果您想要数据框的列名,则可以使用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
但是,在您已经完成的数据帧上调用 columns 方法将返回一个列名列表:
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'
| 归档时间: |
|
| 查看次数: |
57670 次 |
| 最近记录: |