读隐含小数点的固定长度文件?

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

假设我有一个这样的数据文件:

foo12345
bar45612

我想将其解析为:

+----+-------+
|  id|    amt|
+----+-------+
| foo| 123.45|
| bar| 456.12|
+----+-------+

也就是说,我需要选择df.value.substr(4,5).alias('amt'),但是我希望将值解释为五位数,其中最后两位数位于小数点后面。

当然,除了“除以100”之外,有更好的方法吗?

pyspark spark-dataframe
1个回答
0
投票

希望这可以帮助!

from pyspark.sql.functions import substring, concat, lit
from pyspark.sql.types import DoubleType

#sample data
df = sc.parallelize([
    ['foo12345'],
    ['bar45612']]).toDF(["value"])

df = df.withColumn('id', substring('value',1,3)).\
    withColumn('amt', concat(substring('value', 4, 3),lit('.'),substring('value', 7, 2)).cast(DoubleType()))
df.show()

输出是:

+--------+---+------+
|   value| id|   amt|
+--------+---+------+
|foo12345|foo|123.45|
|bar45612|bar|456.12|
+--------+---+------+
© www.soinside.com 2019 - 2024. All rights reserved.