【问题标题】:csv header parsing in pysparkpyspark中的csv标头解析
【发布时间】:2021-02-10 11:54:35
【问题描述】:

我正在尝试从 Azure 数据块读取 csv 文件作为数据帧。 标题列(当我在 excel 中打开时)如下。 CSV 文件中的所有标题名称均采用以下格式。

例如

"City_Name"ZYD_CABC2_EN:0TXTMD

基本上我只想将引号内的字符串作为我的标题 (City_Name) 并忽略字符串的第二部分 (ZYD_CABC2_EN:0TXTMD)

sales_df = spark.read.format("csv").load(input_path + '/sales_2020.csv', inferSchema = True, header=True)

【问题讨论】:

    标签: dataframe csv apache-spark pyspark


    【解决方案1】:

    你可以在读取csv文件后解析列名,使用正则表达式提取引号之间的单词,然后使用toDF一次重新分配所有列名:

    import re
    
    # sales_df = spark.read.format("csv")...
    
    sales_df = sales_df.toDF(*[re.search('"(.*)"', c).group(1) for c in df.columns])
    

    【讨论】:

      【解决方案2】:

      您可以使用" split 的实际名称来获取所需的列名称:

      sales_df = sales_df.toDF(*[c.split('"')[1] for c in df.columns])
      

      【讨论】:

        猜你喜欢
        • 2019-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-04
        • 1970-01-01
        • 2010-11-08
        • 2010-09-09
        相关资源
        最近更新 更多