網站首頁 編程語言 正文
背景
在使用dataframe時,我們常常需要依據應用場景,需要將原來一條record 拆分為多行(字段數增加1個,record增加),或者在一個record中根據已有字段拆分為多列(仍是1個record,字段數增加)
拆分為多個字段(多列)
from pyspark.sql import functions
# 假設需要將字段col_1的內容按照‘@’字符拆分為兩個字段
# col_new_1, col_new2
# your_df 為已加載dataframe
split_col = functions.split(your_df['col_1'], '@') # 拆分
your_df = your_df.withColumn('col_new_1', split_col.getItem(0)) # 新增col_new_1字段
your_df = your_df.withColumn('col_new_2', split_col.getItem(1)) # 新增col_new_2字段
拆分為多個record(多行)
from pyspark.sql import functions
# 假設已有字段col_list=[1,2,3],需要按照該字段的每個元素,作為新的一列,且每個元素都為新的一行。舉例如下:
# col_name col_list
# 'name1' [1,2,3]
# ====>
# col_name col_list new_col
# 'name1' [1,2,3] 1
# 'name1' [1,2,3] 2
# 'name1' [1,2,3] 3
# 仍然假設 your_df 為已加載dataframe
your_df = your_df.withColumn('new_col', functions.explode('col_list')) # 拆分,并生成多行
這里個functions.explode和hive中的explode作用類似,可參考
鏈接: json解析中的explode使用
其他
這里還有另外一個問題,如果我們原始數據并沒規律的以@分割的固定格式字段,或者原始數據中并沒有事先準備好的array格式的字段,如何生成呢?——使用udf生成
udf的使用,可以參見pyspark中udf寫法及其使用
原文鏈接:https://blog.csdn.net/Airstudy/article/details/125983835
相關推薦
- 2022-09-17 C++中String類型的逆序方式_C 語言
- 2023-07-31 解決el-tree數據回顯時子節點部分選中,父節點都全選中的坑
- 2022-12-30 React高階組件使用教程詳解_React
- 2022-07-01 c++超細致講解引用_C 語言
- 2023-05-24 python實現對AES加密的視頻數據流解密的方法_python
- 2023-03-22 C++類中const修飾的成員函數及日期類小練習_C 語言
- 2022-07-08 C#之Socket(套接字)通信_C#教程
- 2022-09-04 Python中函數的參數類型詳解_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支