微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AWS Glue - 替换包含“.”的字段名称和 ”_”

如何解决AWS Glue - 替换包含“.”的字段名称和 ”_”

我正在尝试替换所有带有“.”的字段。字段名内改为“_”。

这就是我所拥有的:

def apply_renaming_mapping(df):
    """Given a dynamic data frame,if the field contains .,replace with _"""
    # construct renaming mapping for ApplyMapping
    mappings = list()
    # for field in df.schema.fields:
    for name,dtpye in df.dtypes:
        if '.' in name:
            mappings.append((name,dtype,name.replace('.','_'),dtype))
    # apply mapping
    reanmed= ApplyMapping(frame=df,mappings=mappings)
    return renamed

但我想我遗漏了一些东西。不断收到以下错误: 在relationalize_and_write 重命名= apply_renaming_mapping(m_df.toDF()) 文件 apply_renaming_mapping reanmed= ApplyMapping(frame=df,mappings=mappings) 类型错误:ApplyMapping() 没有参数 在处理上述异常的过程中,发生了另一个异常:Traceback(最近一次调用最后一次):

在这里做错了什么?

解决方法

回答这个问题:

  1. 如果是动态帧,则转换为数据帧。
  2. 使用 df.columns 替换列
  3. 转换回动态框架。
,

这是我在 ETL 中使用的一个函数,用于一步重命名列。参数是 DataFrame 和像 {'old_name_1':'new_name_1'}

这样的字典
def rename_dataframe_columns(df,old_new_column_names):
    if isinstance(old_new_column_names,dict):
        for old_name,new_name in old_new_column_names.items():
            df = df.withColumnRenamed(old_name,new_name)
        return df

    raise ValueError("'old_new_column_names' should be a dict,like {'old_name_1':'new_name_1'}")

一个简单的for df.columns 就足以创建字典。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。