文章目錄
-
- DataFrame一列拆成多列
- DataFrame一行拆成多行
-
- 分割需求
- 簡要流程
- 詳細說明
-
- 0. 初始資料
- 1. 使用split拆分
- 2. 使用stack行轉列
- 3. 重置索引(删除多餘的索引)并命名為C
- 4. 使用join合并資料
DataFrame一列拆成多列
- 讀取資料
- 将City列轉成多列(以‘|’為分隔符)
這裡使用匿名函數lambda來講City列拆成兩列。
DataFrame一行拆成多行
分割需求
在處理資料過程中,會需要将一條資料拆分為多條,比如:
a|b|c
拆分為
a、b、c
,并結合其他資料顯示為三條資料。
簡要流程
- 将需要拆分的資料使用
拆分,并通過split
功能分成多列expand
- 将拆分後的多列資料使用
進行列轉行操作,合并成一列stack
- 将生成的複合索引重新進行
保留原始的索引,并命名為reset_index
C
- 将處理後的資料和原始
進行DataFrame
操作,預設使用的是索引進行連接配接join
詳細說明
0. 初始資料
df
=============================
# 顯示df中的資料
A B C
0 t1 china a|b|c
1 t2 usa d|e|f
複制
1. 使用split拆分
對C列,按照|進行拆分
column_C = df['C'].str.split('|', expand=True)
=================================
# 顯示column_C的資料
0 1 2
0 a b c
1 d e f
複制
2. 使用stack行轉列
column_C = column_C.stack()
=================================
# 顯示column_C的資料
0 0 a
1 b
2 c
1 0 d
1 e
2 f
## 前兩列是索引,實際上column_C是一個未設定名字的Series
複制
3. 重置索引(删除多餘的索引)并命名為C
column_C = column_C.reset_index(level=1, drop=True, name='C')
==================================
# 顯示column_C的資料
0 a
0 b
0 c
1 d
1 e
1 f
Name: C, dtype: object
複制
4. 使用join合并資料
# 原始資料丢棄C列,然後與column_C合并
df_new = df.drop(['C'], axis=1).join(column_C)
===================================
# 顯示df_new 的資料
A B C
0 t1 china a
0 t1 china b
0 t1 china c
1 t2 usa d
1 t2 usa e
1 t2 usa f
複制
參考:https://blog.csdn.net/Asher117/article/details/84346073/
https://www.jianshu.com/p/0ecda1a41732