如何忽略$ sign in value和sum

问题描述 投票:0回答:1

这就是我的csv数据的样子:

TagNumber,DatePaid,TotalPaid
ABCD,11/5/2017,$101
EFGH,12/5/2017,$201
ABCD,15/5/2017,$501

我正在创建一个数据帧,它将按TagNumber对数据进行分组,获取Date和最大值以及TotalPaid总和。

这就是我创建数据帧的方式

valid_data = valid_data.select('TagNumber', from_unixtime(unix_timestamp('DatePaid', 'MM/dd/yyy')).alias('m_paiddDate'), "TotalPaid")\
        .groupBy("TagNumber") \
        .agg(F.min("DatePaid").alias("min_date"), F.max("DatePaid").alias("max_date"), F.count("TagNumber").alias("no_of_times_paid")) \
        .orderBy("no_of_times_paid", ascending=False)

当我将F.sum("TotalPaid").alias("Total_Paid")添加到聚合器时,我得到Total_Paid列的空值,因为$符号将其视为字符串。

如何获得sum列的TotalPaid

python-3.x apache-spark dataframe pyspark
1个回答
1
投票

尝试这样的东西将TotalPaid转换为数值(首先用正则表达式删除$,然后转换):

valid_data = valid_data.withColumn(
    'TotalPaid', F.regexp_replace('TotalPaid','\$', '').cast('float')
)
© www.soinside.com 2019 - 2024. All rights reserved.