如何在Spark RDD中比较不区分大小写的字符串?

2024-07-08 07:34:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下数据集

drug_name,num_prescriber,total_cost
AMBIEN,2,300
BENZTROPINE MESYLATE,1,1500
CHLORPROMAZINE,2,3000

想从上面的数据集和标题中找出A和B的数量。我用下面的代码来找出A的个数和B的个数

^{pr2}$

它以1 1的形式返回输出。我想在不区分大小写的情况下进行比较。我尝试了以下操作,但它返回的错误是'Column' object is not callable

numAs = logData.filter((logData.value).tolower().contains('a')).count()
numBs = logData.filter((logData.value).tolower().contains('b')).count()

请帮帮我。在


Tags: 数据namevaluecountfilternumtotalcost
1条回答
网友
1楼 · 发布于 2024-07-08 07:34:38

若要转换为小写,您应该使用lower()函数(请参见here)from{}。因此您可以尝试:

import pyspark.sql.functions as F

logData = spark.createDataFrame(
    [
     (0,'aB'),
     (1,'AaA'),
     (2,'bA'),
     (3,'bB')
    ],
    ('id', "value")
)
numAs = logData.filter(F.lower((logData.value)).contains('a')).count()

您提到“我正在使用下面的代码来计算A数和B数”。请注意,如果要计算某个字符的实际出现次数而不是包含该字符的行数,可以执行以下操作:

^{pr2}$

在上面的示例中,它将返回5。在

希望这有帮助!在

相关问题 更多 >

    热门问题