假设我有一个这样的数据文件:
foo12345
bar45612
我想将其解析为:
+----+-------+
| id| amt|
+----+-------+
| foo| 123.45|
| bar| 456.12|
+----+-------+
也就是说,我需要选择df.value.substr(4,5).alias('amt')
,但我希望将值解释为五位数,其中最后两位数位于小数点后面。
当然,除了“除以100”之外,还有更好的方法吗?
答案 0 :(得分: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|
+--------+---+------+