iT邦幫忙

2025 iThome 鐵人賽

DAY 27
0
佛心分享-讓我升級的那些書

菜雞學習 pandas 的 30 日讀書分享系列 第 27

菜雞學習 pandas 的 30 日讀書分享【Day 27】重複標籤

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20250827/20168290saZpynzaaC.jpg

重複標籤

目前看到的範例都有互不相同的軸標籤 (索引值),雖然有很多 pandas 函式如 reindex 都要求標籤互不相同,但並非強制規定,假如是一個具有重複索引的 Series:

In [258]: obj = pd.Series(np.arange(5), index=["a", "a", "b", "b", "c"])

In [259]: obj
Out[259]:
a    0
a    1
b    2
b    3
c    4
dtype: int64

索引的 is_unique 屬性可顯示標籤是否全都互不相同:

In [260]: obj.index.is_unique
Out[260]: False

當有重複的標籤時,選擇資料會產生不同的行為,檢索一個具有多個相同項目的標籤時會得到一個 Series,但是標籤只有一個項目時會得到一個純量值:

In [261]: obj["a"]
Out[261]:
a    0
a    1
dtype: int64

In [262]: obj["c"]
Out[262]: 4

這種情況有可能讓程式變得更複雜,因為進行檢索得到的輸出型態會根據標籤是否重複而有所不同。

同樣的邏輯也可以延伸到檢索 DataFrame 裡的列或欄:

In [263]: df = pd.DataFrame(np.random.standard_normal((5, 3)),
   .....:                   index=["a", "a", "b", "b", "c"])
  
In [264]: df
Out[264]:
          0         1         2
a  0.274992  0.228913  1.352917
a  0.886429 -2.001637 -0.371843
b  1.669025 -0.438570 -0.539741
b  0.476985  3.248944 -1.021228
c -0.577087  0.124121  0.302614

In [265]: df.loc["b"]
Out[265]:
          0         1         2
b  1.669025 -0.438570 -0.539741
b  0.476985  3.248944 -1.021228

In [266]: df.loc["c"]
Out[266]:
0   -0.577087
1    0.124121
2    0.302614
Name: c, dtype: float64

今日的分享就到這囉,我們明天見,掰掰!


上一篇
菜雞學習 pandas 的 30 日讀書分享【Day 26】排名 (下)
下一篇
菜雞學習 pandas 的 30 日讀書分享【Day 28】總結與計算描述性統計數據
系列文
菜雞學習 pandas 的 30 日讀書分享30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言