还有其他关于如何重命名PySpark DataFrame中的列的线程,请参见这里、这里和这里。我不认为现有的解决方案具有足够的性能或通用性(我有一个应该更好的解决方案,但我被一个边缘情况bug所困扰)。让我们从回顾当前解决方案中的问题开始:
withcolumnremistrated
可能会遇到与多次调用withcolumn
相同的性能问题,如本博客文章所述。请参见此答案中的选项2。我创建了一个泛型函数,它适用于所有列类型,但包含点的列名除外:
import pyspark.sql.functions as F
def with_columns_renamed(fun):
def _(df):
cols = list(map(
lambda col_name: F.col(col_name).alias(fun(col_name)),
df.columns
))
return df.select(*cols)
return _
假设您有以下数据frame:
+-------------+-----------+
|i like cheese|yummy stuff|
+-------------+-----------+
| jose| a|
| li| b|
| sam| c|
+-------------+-----------+
以下是如何用下划线替换列名中的所有空白:
def spaces_to_underscores(s):
return s.replace(" ", "_")
df.transform(with_columns_renamed(spaces_to_underscores)).show()
+-------------+-----------+
|i_like_cheese|yummy_stuff|
+-------------+-----------+
| jose| a|
| li| b|
| sam| c|
+-------------+-----------+
+-------------+-----------+
|i.like.cheese|yummy.stuff|
+-------------+-----------+
| jose| a|
| li| b|
| sam| c|
+-------------+-----------+
def dots_to_underscores(s):
return s.replace(".", "_")
df.transform(quinn.with_columns_renamed(dots_to_underscores))
你可以做一些像这样简单的事情,
import pyspark.sql.functions as F
def with_columns_renamed(fun):
def _(df):
cols = list(map(
lambda col_name: F.col('`' + col_name + '`').alias(fun(col_name)),
df.columns
))
return df.select(*cols)
return _
到目前为止,我们前面已经存建了一个 Python 的源代码文件,现在,要修改 main.py 文件的名称把它作为一个新的模块,假设这里要文件main.py的新名称为:module.py。 Git在文件名之前显示,表示文件已被重命名。 对于提交操作,需要使用标志,这使自动检测修改的文件。 提交后,新文件将更改推送到远程存储库。 上述命令将产生以下结果: 现在,其他开发人员可以通过使用命令更新本地存储
rename-command 例如:rename-command FLUSHALL “”。必须重启。
rename oldkey newkey 如果newkey存在,将会被覆盖,返回1表示成功,0失败。可能是oldkey不存在或者和newkey相同 renamenx oldkey newkey 同上,但是如果newkey存在返回失败
null
本文向大家介绍PowerShell批量文件重命名操作实例,包括了PowerShell批量文件重命名操作实例的使用技巧和注意事项,需要的朋友参考一下 总算发现PowerShell相对于CMD来说实用的地方了。 事情是这样的,我下载了一些美剧(抱歉,看完会删的),通常文件名都比较长,包含了很多我不需要的信息,,比如: 我想要的只是: 由于我需要的文件名是原文件名中固定的一部分,于是我想到了PowerS
问题内容: 我们可以重命名文件说来? 如果存在,它将重命名吗? 如何将其重命名为已经存在的test1.txt文件,以便将test.txt的新内容添加到其中以供以后使用? 问题答案: 从http://exampledepot.8waytrips.com/egs/java.io/RenameFile.html复制 追加到新文件: