攝影或3C

Python: 如何正確地將pandas.Series(索引需對齊)和列表list(長度需一致)指配給DataFrame的新column?

在數據處理和分析中,經常需要將新的數據列加入到現有的DataFrame中。在Pandas中,這通常涉及到兩種常見的數據類型:Series和列表(list)。本教程將詳細介紹如何將這兩種類型的數據正確地分配給DataFrame的新列,特別是關注列表長度的匹配問題以及Series索引不對齊時可能出現的情況。

將列表分配給DataFrame的新列
向DataFrame添加一個列表作為新列是一個直接的操作,但需要確保列表的長度與DataFrame的行數完全相等。如果長度不匹配,Pandas會拋出一個錯誤,因為它無法決定如何填充多出來或缺少的行。

示例:

import pandas as pd

# 創建一個DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6]
})

# 創建一個正確長度的列表
correct_list = [7, 8, 9]

# 分配列表到新列
df['C'] = correct_list

print(df)

輸出結果:

如果列表長度與DataFrame的行數不一致,例如:

# 創建一個長度不匹配的列表
incorrect_list = [10, 11]  # 只有兩個元素

# 嘗試分配到新列
df['D'] = incorrect_list  # 這將引發一個錯誤

這將引發一個ValueError,因為列表的長度不等於DataFrame的rows數。 
ValueError: Length of values (2) does not match length of index (3)

將Series分配給DataFrame的新列
當分配一個Series到DataFrame的新列時,如果Series的索引與DataFrame的索引不對齊,Pandas會嘗試根據索引進行對齊操作。不匹配的索引會在新column中產生NaN值。

示例:

# 創建一個Series索引不對齊
s = pd.Series([10, 11, 12], index=[1, 2, 4], name='D')

# 分配Series到新列
df['D'] = s

print(df)

輸出結果:

可以看到,由於原df有的索引0在Series中不存在,
對應的值在新column中顯示為NaN。

總結
在將列表或Series分配給DataFrame的新列時,重要的是要確保數據的對齊:

列表必須具有與DataFrame rows數相同的長度。
Series的索引應與DataFrame的索引對齊,否則將在不匹配的索引處生成NaN。
正確處理這些數據類型的添加不僅可以避免運行時錯誤,
還能確保數據的準確性和完整性。

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

儲蓄保險王

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

Recent Posts