Series 檢索 obj[...]
的工作方式類似 NumPy 的陣列檢索,但可以使用 Series 的索引值,而不是只能使用整數。
In [124]: obj = pd.Series(np.arange(4.), index=["a", "b", "c", "d"])
In [125]: obj
Out[125]:
a 0.0
b 1.0
c 2.0
d 3.0
dtype: float64
In [126]: obj["b"]
Out[126]: 1.0
In [127]: obj[1]
OUt[127]: 1.0
In [128]: obj[2:4]
Out[128]:
c 2.0
d 3.0
dtype: float64
In [129]: obj[["b", "a", "d"]]
Out[129]:
b 1.0
a 0.0
d 3.0
dtype: float64
In [130]: obj[[1, 3]]
Out[130]:
b 1.0
d 3.0
dtype: float64
In [131]: obj[obj < 2]
Out[131]:
a 0.0
b 1.0
dtype: float64
雖然可以使用標籤來選擇資料,但是在選擇索引值時,比較好的方式是使用特殊的 loc
運算子:
In [132]: obj.loc[["b", "a", "d"]]
Out[122]:
b 1.0
a 0.0
d 3.0
dtype: float64
使用 loc
的原因是因為使用 []
來檢索時,會以不同的方式對待整數,如果索引包含整數,會將整數視為標籤,同樣的索引產生的結果會隨著索引的資料型態而改變:
In [133]: obj1 = pd.Series([1, 2, 3], index=[2, 0, 1])
In [134]: obj2 = pd.Series([1, 2, 3], index=["a", "b", "c"])
In [135]: obj1
Out[135]:
2 1
0 2
1 3
dtype: int64
In [136]: obj2
Out[136]:
a 1
b 2
c 3
dtype: int64
In [137]: obj1[[0, 1, 2]]
Out[137]:
2 1
0 2
1 3
dtype: int64
In [138]: obj2[[0, 1, 2]]
Out[138]:
a 1
b 2
c 3
dtype: int64
今日的分享就到這囉,我們明天見,掰掰!