Python: List[ pandas.Series ] 轉DataFrame技巧:正確理解row和column的關係,同 concat( List[ pandas.Series ], axis=1 ).T

加入好友
加入社群
Python: List[ pandas.Series ] 轉DataFrame技巧:正確理解row和column的關係,同 concat( List[ pandas.Series ], axis=1 ).T - 儲蓄保險王

在處理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 - 儲蓄保險王

方法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 - 儲蓄保險王

此方法的關鍵點:

  • 每個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 - 儲蓄保險王

此方法的關鍵點:

  • 每個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 - 儲蓄保險王

實用指南

  1. 何時使用DataFrame構造函數處理Series列表:
    • 當你希望每個Series代表DataFrame的一個row
    • 當你希望Series的索引成為DataFrame的columns
  2. 何時使用concat搭配axis=1:
    • 當你希望每個Series代表DataFrame的一個column
    • 當你希望Series的索引成為DataFrame的index

重要區別總結

理解這些方法之間的差異對於有效的數據處理非常重要:

  1. DataFrame(series_list)
    • 每個Series → row
    • Series索引 → columns
    • Series名稱 → index
  2. concat(series_list, axis=1)
    • 每個Series → column
    • Series索引 → index
    • Series名稱 → column names

這些方法提供了不同的數據排列方式,
選擇正確的方法可以讓你更精確地構建所需的數據結構。

推薦hahow線上學習python: https://igrape.net/30afN

加入好友
加入社群
Python: List[ pandas.Series ] 轉DataFrame技巧:正確理解row和column的關係,同 concat( List[ pandas.Series ], axis=1 ).T - 儲蓄保險王

儲蓄保險王

儲蓄險是板主最喜愛的儲蓄工具,最喜愛的投資理財工具則是ETF,最喜愛的省錢工具則是信用卡

You may also like...

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *