【问题标题】:how make elements of a list lower case?如何使列表的元素小写?
【发布时间】:2022-12-08 01:26:14
【问题描述】:

我有一个 df,其中一列是一组单词。我怎样才能以有效的方式使它们小写? df 有很多列,但我试图使其小写的列是这样的:

B
['Summer','Air Bus','Got']
['Parmin','Home']

笔记:

在熊猫我做df['B'].str.lower()

【问题讨论】:

    标签: pyspark


    【解决方案1】:

    如果我理解正确的话,你有一列是一个字符串数组。

    要降低字符串,您可以使用 lower 函数,如下所示:

    from pyspark.sql import SparkSession
    import pyspark.sql.functions as F
    
    
    data = [
        {"B": ["Summer", "Air Bus", "Got"]},
    ]
    
    spark = SparkSession.builder.getOrCreate()
    df = spark.createDataFrame(data)
    df = df.withColumn("result", F.expr("transform(B, x -> lower(x))"))
    

    结果:

    +----------------------+----------------------+                                 
    |B                     |result                |
    +----------------------+----------------------+
    |[Summer, Air Bus, Got]|[summer, air bus, got]|
    +----------------------+----------------------+
    

    【讨论】:

    • 由于某种原因,这需要太多时间
    • @user15649753 不确定你在哪里运行它以及你有多少数据。如果您的数据很大,我怀疑它可能会很慢。
    • 如何在转换函数中传递动态列名?
    • @merkle,你可以试试这个:m = "B"; df = df.withColumn("result", F.transform(F.col(m),lambda x: F.lower(x)))
    【解决方案2】:

    我对上面的 @vladsiv 回答略有不同,它试图回答上面 cmets 中关于传递动态列名的问题。

    # set column name
    m = "B"
    
    # use F.tranform directly, rather than in a F.expr
    df = df.withColumn("result", F.transform(F.col(m), lambda x:F.lower(x)))
    

    【讨论】:

      猜你喜欢
      • 2015-01-02
      • 2019-03-20
      • 2020-12-06
      • 1970-01-01
      • 1970-01-01
      • 2021-07-10
      • 2022-01-22
      • 2016-04-25
      • 1970-01-01
      相关资源
      最近更新 更多