Pyspark 创建字符串类型的测试数据
Pyspark create testing data with string type
我正在尝试创建测试数据框,其中一列为 Int 类型,一列为 String 类型。输出类似于下面。我认为对于 Int 我们可以使用
data = spark.range(1, 5)
output = dataset.withColumnRenamed('id','myid')
我们如何处理该字符串列?非常感谢您的帮助!
预期输出:
id. ordernum
1 0032
2 0033
3 0034
4 0035
5 0036
您可以从列表的列表创建 Spark 数据框。这是一个例子:
data = [[i, '%04d' % (i+31)] for i in range(1,6)]
# [[1, '0032'], [2, '0033'], [3, '0034'], [4, '0035'], [5, '0036']]
df = spark.createDataFrame(data, ['id', 'ordernum'])
df.show()
+---+--------+
| id|ordernum|
+---+--------+
| 1| 0032|
| 2| 0033|
| 3| 0034|
| 4| 0035|
| 5| 0036|
+---+--------+
如果您更喜欢 Spark 范围,可以使用 format_string
:
import pyspark.sql.functions as F
df = spark.range(1, 6).withColumn(
'ordernum',
F.format_string('%04d', F.col('id') + 31)
)
df.show()
+---+--------+
| id|ordernum|
+---+--------+
| 1| 0032|
| 2| 0033|
| 3| 0034|
| 4| 0035|
| 5| 0036|
+---+--------+
您可以使用 lpad
函数从 id + 31
列创建 ordernum
列,左侧用 0 填充以获得 4 位数字的字符串编号:
from pyspark.sql import functions as F
output = spark.range(1, 6).withColumn("ordernum", F.lpad(col("id") + 31, 4, '0'))
output.show()
#+---+--------+
#| id|ordernum|
#+---+--------+
#| 1| 0032|
#| 2| 0033|
#| 3| 0034|
#| 4| 0035|
#| 5| 0036|
#+---+--------+
我正在尝试创建测试数据框,其中一列为 Int 类型,一列为 String 类型。输出类似于下面。我认为对于 Int 我们可以使用
data = spark.range(1, 5)
output = dataset.withColumnRenamed('id','myid')
我们如何处理该字符串列?非常感谢您的帮助!
预期输出:
id. ordernum
1 0032
2 0033
3 0034
4 0035
5 0036
您可以从列表的列表创建 Spark 数据框。这是一个例子:
data = [[i, '%04d' % (i+31)] for i in range(1,6)]
# [[1, '0032'], [2, '0033'], [3, '0034'], [4, '0035'], [5, '0036']]
df = spark.createDataFrame(data, ['id', 'ordernum'])
df.show()
+---+--------+
| id|ordernum|
+---+--------+
| 1| 0032|
| 2| 0033|
| 3| 0034|
| 4| 0035|
| 5| 0036|
+---+--------+
如果您更喜欢 Spark 范围,可以使用 format_string
:
import pyspark.sql.functions as F
df = spark.range(1, 6).withColumn(
'ordernum',
F.format_string('%04d', F.col('id') + 31)
)
df.show()
+---+--------+
| id|ordernum|
+---+--------+
| 1| 0032|
| 2| 0033|
| 3| 0034|
| 4| 0035|
| 5| 0036|
+---+--------+
您可以使用 lpad
函数从 id + 31
列创建 ordernum
列,左侧用 0 填充以获得 4 位数字的字符串编号:
from pyspark.sql import functions as F
output = spark.range(1, 6).withColumn("ordernum", F.lpad(col("id") + 31, 4, '0'))
output.show()
#+---+--------+
#| id|ordernum|
#+---+--------+
#| 1| 0032|
#| 2| 0033|
#| 3| 0034|
#| 4| 0035|
#| 5| 0036|
#+---+--------+