【发布时间】:2022-12-08 01:26:14
【问题描述】:
我有一个 df,其中一列是一组单词。我怎样才能以有效的方式使它们小写? df 有很多列,但我试图使其小写的列是这样的:
B
['Summer','Air Bus','Got']
['Parmin','Home']
笔记:
在熊猫我做df['B'].str.lower()
【问题讨论】:
标签: pyspark
我有一个 df,其中一列是一组单词。我怎样才能以有效的方式使它们小写? df 有很多列,但我试图使其小写的列是这样的:
B
['Summer','Air Bus','Got']
['Parmin','Home']
笔记:
在熊猫我做df['B'].str.lower()
【问题讨论】:
标签: pyspark
如果我理解正确的话,你有一列是一个字符串数组。
要降低字符串,您可以使用 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]|
+----------------------+----------------------+
【讨论】:
m = "B"; df = df.withColumn("result", F.transform(F.col(m),lambda x: F.lower(x)))
我对上面的 @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)))
【讨论】: