【问题标题】:Renaming rows under Specific column to a common name - pyspark将特定列下的行重命名为通用名称 - pyspark
【发布时间】:2021-05-26 12:01:01
【问题描述】:

我有一个“国家”的列名,在这个列中我有 20 个左右的国家,但是它们使用许多不同的语言,因此以不同的语言出现了好几次。例如,瑞士以 Suiza、Schweiz、Suisse 和瑞士出现。

如何将“国家”列中的重复国家/地区重命名为通用名称瑞士,同时保留其他列中的值?

【问题讨论】:

  • 您在哪里存储了备用名称,即Suiza, Schweiz, Suisse 用于Switzerland
  • 所有国家的名称都在“国家”列下。仅支持多种语言
  • 您的数据集中是否有另一列指示每个国家/地区名称使用的语言或首选国家/地区名称?数据集中还有其他类似/共享的值吗?
  • 我打算让所有国家都用英语,但这一列的值与其他列不同。

标签: apache-spark pyspark apache-spark-sql


【解决方案1】:

只需使用CASE 声明:

df = spark.sql(
SELECT 
  CASE 
    WHEN country IN ('Suiza', 'Schweiz', 'Suisse','Switzerland')
    THEN 'Switzerland'
    WHEN ... -- other translations
    ELSE country
  END AS country,
  ... -- other columns
FROM your_table
)

【讨论】:

    【解决方案2】:

    如果你有一个映射表,你可以将它加入到你的表中

    countryList = [
        ("Suiza",),
        ("Allemagne",),
        ("Schweiz",),
        ("Suisse",),
        ("Switzerland",),
        ("Suisse",),
        ("Suisse",),
        ("Germany",)
        ]
    
    schema = ["country",]
    df_countries = spark.createDataFrame(data=countryList, schema = schema)
    
    countryMap = [
        ("Suiza","CH"),
        ("Schweiz","CH"),
        ("Suisse","CH"),
        ("Switzerland","CH"),
        ("Germany","DE"),
        ("Allemagne","DE")
        ]
    
    schema = ["country","unified_country"]
    df_map = spark.createDataFrame(data=countryMap, schema = schema)
    
    df_countries.show()
    df_map.show()
    
    df_result=(df_countries
              .join(df_map,on="country",how="left")
              )
    
    df_result.show()
    

    看起来像这样

    +-----------+---------------+
    |    country|unified_country|
    +-----------+---------------+
    |      Suiza|             CH|
    |    Schweiz|             CH|
    |    Germany|             DE|
    |     Suisse|             CH|
    |     Suisse|             CH|
    |     Suisse|             CH|
    |  Allemagne|             DE|
    |Switzerland|             CH|
    +-----------+---------------+
    

    【讨论】:

      猜你喜欢
      • 2015-04-15
      • 2023-04-02
      • 1970-01-01
      • 2022-10-05
      • 2018-12-22
      • 2021-02-17
      • 2021-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多