代码之家  ›  专栏  ›  技术社区  ›  user3486773

如何替换pyspark数据帧列名中的字符串?

  •  0
  • user3486773  · 技术社区  · 3 年前

    我有一个pyspark数据帧,每列都附加表名,即:table.col1,table.col2。。。

    我想替换“表”在我的数据帧中的每一列中都有“”(没有任何内容)。

    我该怎么做?我所发现的一切都涉及到对列中的值而不是列名本身执行此操作。

    2 回复  |  直到 3 年前
        1
  •  1
  •   Timeless    3 年前

    一种选择是使用 toDF 具有 replace :

    DataFrame.toDF(*cols)
    返回具有的新DataFrame 新指定的列名

    out = df.toDF(*[c.replace("Table.", "") for c in df.columns])
    

    输出:

    out.show()
    +----+----+
    |col1|col2|
    +----+----+
    | foo|   1|
    | bar|   2|
    +----+----+
    

    使用的输入:

    +----------+----------+
    |Table.col1|Table.col2|
    +----------+----------+
    |       foo|         1|
    |       bar|         2|
    +----------+----------+
    
        2
  •  0
  •   Sadman Sakib    3 年前

    在中执行 PySpark :

    from pyspark.sql.functions import col
    new_columns = [col(column_name).alias(column_name.replace('Table.', '')) for column_name in df.columns]
    df_new = df.select(new_columns)
    

    此外,如果有人想在 Pandas :

    df.columns = df.columns.str.replace('Table.', '')
    
    推荐文章