pyspark - 如何用字典替换pyspark数据框列值
问题描述
我有一个如下所示的数据框
+++++++++++++++++++++
colA | colB | colC |
+++++++++++++++++++++
123 | 3 | 0|
222 | 0 | 1|
200 | 0 | 2|
我想用 dict d 替换 colB 中的值以获得这样的结果。
d = {3:'a', 0:'b}
+++++++++++++++++++++
colA | colB | colC |
+++++++++++++++++++++
123 | a | 0|
222 | b | 1|
200 | b | 2|
解决方案
您应该简单地使用实际上并没有清楚地解释这个用例的数据框方法替换。
要使用字典,您必须简单地将指定的 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|
另请注意,“替换时,新值将转换为现有列的类型”,如文档中所述。结果,您的列将被转换为字符串。
推荐阅读
- javascript - 使用 SVG 和 JS 制作类似绘画的东西
- ruby-on-rails - 无法验证 SSL 证书
- python - 在 fig Python 中给子图不同的方向
- python - django html模板未从模型的通用视图加载
- excel - 个人宏工作簿项目仍然可见,代码随机丢失
- python - Python中的有理数
- javascript - 需要弄清楚视频的 CSS 选择器
- android - Xamarin 在不同的进程问题中分离服务
- python - 你将如何在 google protobufs for python 中设置 DoubleValue
- python - 如何在python中为Matrix选择特定列