python - 如何将一列中的字典列表拆分为pyspark数据框中的两列?
问题描述
我想将上面火花数据帧的过滤地址列拆分为两个新列,即标志和地址:
customer_id|pincode|filteredaddress| Flag| Address
1000045801 |121005 |[{'flag':'0', 'address':'House number 172, Parvatiya Colony Part-2 , N.I.T'}]
1000045801 |121005 |[{'flag':'1', 'address':'House number 172, Parvatiya Colony Part-2 , N.I.T'}]
1000045801 |121005 |[{'flag':'1', 'address':'House number 172, Parvatiya Colony Part-2 , N.I.T'}]
谁能告诉我我该怎么做?
解决方案
您可以filteredaddress
使用键从地图列中获取值:
df2 = df.selectExpr(
'customer_id', 'pincode',
"filteredaddress['flag'] as flag", "filteredaddress['address'] as address"
)
访问地图值的其他方法是:
import pyspark.sql.functions as F
df.select(
'customer_id', 'pincode',
F.col('filteredaddress')['flag'],
F.col('filteredaddress')['address']
)
# or, more simply
df.select(
'customer_id', 'pincode',
'filteredaddress.flag',
'filteredaddress.address'
)
推荐阅读
- heroku - 我可以将 Heroku 设置为默认不重试超时请求吗?
- java - Java:在聊天机器人响应系统中实现延迟的更简单方法?
- sql - 我可以优化这个 SQL 查询来显示一天内有 100 多个条目的用户吗?
- java - 检测输入字符串与整数的异常处理
- graphql - 我可以有一个联合图,其中接口的实现在 2 个单独的服务中
- linux - MetalLB 仅在主节点中工作,无法访问从工作人员分配的 ip
- functional-programming - 需要帮助在 OCaml 中打印 hofstadter 女性序列中的前 N 个数字
- dataframe - 使用 Spark DataFrames 查询 JSON 数据列
- testing - 我是 promela 的新手,正在寻找是否有人可以帮助我处理 TFTP 我需要使用 Ispin 软件实现属性、超时、窗口大小选项
- sql - 插入后触发以检查和比较表之间的记录