我有一个如下所示的数据框
+++++++++++++++++++++
colA | colB | colC |
+++++++++++++++++++++
123 | 3 | 0|
222 | 0 | 1|
200 | 0 | 2|
我想用字典d替换colB中的值以得到这样的结果。
d = {3:'a',0:'b}
+++++++++++++++++++++
colA | colB | colC |
+++++++++++++++++++++
123 | a | 0|
222 | b | 1|
200 | b | 2|
答案 0 :(得分:0)
您应该只使用数据框方法replace,而实际上并不能清楚地说明此用例。
要使用字典,您只需将指定的dict设置为第一个参数,将随机值设置为第二个参数,并将列名设置为第三个参数。
至少在Spark 2.2中,将引发警告,明确指出,由于第一个参数是字典,因此将不考虑第二个参数。
data = [
(123,3,0),
(222,0,2),
(200,0,2)]
df = spark.createDataFrame(data,['colA','colB','colC'])
d = {3:'a', 0:'b}
df_renamed = df.replace(d,1,'colB')
df_renamed.show()
# +++++++++++++++++++++
# colA | colB | colC |
# +++++++++++++++++++++
# 123 | a | 0|
# 222 | b | 1|
# 200 | b | 2|
还请注意,“替换时,新值将转换为现有列的类型” ,如文档内所报告。因此,您的列将被强制转换为字符串。