在處理Pandas數據時,我們經常需要將 List[pd.Series] 轉換為DataFrame。這篇文章將澄清使用不同方法時,數據如何被安排為rows和columns。
基本Series創建
首先創建一些Series用於示範:
import pandas as pd
# 創建測試用Series
s1 = pd.Series([1, 2, 3], index=['a', 'b', 'c'], name='S1')
s2 = pd.Series([4, 5, 6], index=['a', 'b', 'c'], name='S2')
s3 = pd.Series([7, 8, 9], index=['a', 'b', 'c'], name='S3')
series_list = [s1, s2, s3]
# 顯示原始Series
print("原始Series:")
for s in series_list:
print(f"{s.name}:\n{s}\n")
輸出結果:
![Python: List[ pandas.Series ] 轉DataFrame技巧:正確理解row和column的關係,同 concat( List[ pandas.Series ], axis=1 ).T - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2025/04/20250422150133_0_1cfa94.png)
方法1:使用DataFrame構造函數
當你將Series列表傳給DataFrame構造函數時,
每個Series會成為結果DataFrame的一個row:
# 方法1:使用DataFrame構造函數
df1 = pd.DataFrame(series_list)
print("方法1: pd.DataFrame(series_list):")
print(df1)
輸出結果:
![Python: List[ pandas.Series ] 轉DataFrame技巧:正確理解row和column的關係,同 concat( List[ pandas.Series ], axis=1 ).T - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2025/04/20250422150907_0_fff3ec.png)
此方法的關鍵點:
- 每個Series成為DataFrame的一個row
- Series的索引值(‘a’, ‘b’, ‘c’)成為DataFrame的columns
- Series的名稱(‘S1’, ‘S2’, ‘S3’)成為DataFrame的index
- 特別適合Series本來就是從 DataFrame.iterrows() 取得,
其index 就是DataFrame的columns
方法2:使用concat()搭配axis=1
使用concat函數並設置axis=1時,Series會被排列為DataFrame的columns:
# 方法2:使用concat搭配axis=1(水平連接)
df2 = pd.concat(series_list, axis=1)
print("方法2: pd.concat(series_list, axis=1):")
print(df2)
輸出結果:
![Python: List[ pandas.Series ] 轉DataFrame技巧:正確理解row和column的關係,同 concat( List[ pandas.Series ], axis=1 ).T - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2025/04/20250422151212_0_f29cf0.png)
此方法的關鍵點:
- 每個Series成為DataFrame的一個column
- Series的索引值(‘a’, ‘b’, ‘c’)成為DataFrame的index
- Series的名稱(‘S1’, ‘S2’, ‘S3’)成為DataFrame的column names
轉置關係
重要的觀察是方法1和方法2產生的結果互為轉置:
# 演示轉置關係
print("df1是否等於df2.T?", df1.equals(df2.T))
print("df1.T是否等於df2?", df1.T.equals(df2))
輸出結果:
![Python: List[ pandas.Series ] 轉DataFrame技巧:正確理解row和column的關係,同 concat( List[ pandas.Series ], axis=1 ).T - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2025/04/20250422151427_0_bcf984.png)
實用指南
- 何時使用DataFrame構造函數處理Series列表:
- 當你希望每個Series代表DataFrame的一個row
- 當你希望Series的索引成為DataFrame的columns
- 何時使用concat搭配axis=1:
- 當你希望每個Series代表DataFrame的一個column
- 當你希望Series的索引成為DataFrame的index
重要區別總結
理解這些方法之間的差異對於有效的數據處理非常重要:
- DataFrame(series_list):
- 每個Series → row
- Series索引 → columns
- Series名稱 → index
- concat(series_list, axis=1):
- 每個Series → column
- Series索引 → index
- Series名稱 → column names
這些方法提供了不同的數據排列方式,
選擇正確的方法可以讓你更精確地構建所需的數據結構。
推薦hahow線上學習python: https://igrape.net/30afN
近期留言