前文介紹了如何檢視dataframe資料,現在再來看看怎麼樣定位和修改pandas的具體資料。
官方推薦選擇資料的方法為
.at, .iat, .loc, .iloc
,這些方法可以指定行列的資訊進行資料篩選。具體功能說明如下: - at:根據标簽(label)定位具體元素
- iat:根據位置定位具體元素
- loc:根據标簽截取Series、dataframe或具體元素
- iloc:根據位置截取Series、dataframe或具體元素
配合起來可以在dataframe裡面使用多種方式選擇資料:
- 按資料列選擇資料
- 使用清單
方式選擇資料[]
- 按标簽選擇資料
- 按位置選擇資料
- 按條件篩選資料
- 以新值更新選擇的資料
下面我們依然使用前文生成的df對象來示範各種方法
df = pd.DataFrame(np.random.randn(6, 4),
index=dates,
columns=list("ABCD"))

按列選擇資料
可以使用
df.A
方式選擇A列資料,該方式等同于
df["A"]
也可以通過
df[["A","B"]]
方式選擇多個列
清單 []
[]
該方法是截取dataframe中的某些行
- 選擇所有資料
- 通過索引位置選擇某幾行,該方法按照左閉右開方式截取資料
Pandas之三選擇資料 - 選擇某範圍内的幾行資料,該方法按照左閉右閉方式截取資料,類似于SQL文法中的
between .. and ..
注:官方并不推薦使用以上這種方式做資料選擇,推薦選擇資料的方法為
.at, .iat, .loc, .iloc
- 可以根據index值選擇某行資料
- 可以根據用index的範圍選擇多行資料
- 在選擇資料時,可以配合列名進一步選擇資料
- 通過index和列名定位到某個cell具體的值(前文的方式擷取到依然dataframe,而此處擷取到的是标量資料),同時支援
和.loc
方式。要注意的是:.at
-
不支援類型隐式轉換,而.at
是支援的.loc
-
的速度比.at
要快.loc
-
通過位置選擇資料的時候,既可以選擇一行一列、一行多列、多行一列、多行多列也可以選擇具體元素,在label不明确的時候,可以通過位置進行選擇。最典型的場景就是選擇首行、尾行等。
- 選擇第n行資料,隻輸入一個參數時,預設為行。
- 選擇第n行,某幾列資料,同時輸入行列資料時,使用逗号
間隔。在範圍選擇時,其按照左閉右開方式截取資料。,
- 選擇某幾行,某列資料
- 選擇某幾行,某幾列資料
- 選擇所有行,某些列資料
- 選擇具體元素
按條件選擇資料
在pandas中也可以使用條件進行資料過濾,就像使用where條件一樣。
- 根據某列值進行篩選,如圖選擇B>1的資料
- 對整個dataframe進行篩選,選擇值>0的資料
- 使用isin()做資料篩選,類似sql中的in
更新資料
選擇完資料之後,可以使用長度相同的資料的進行更新
- 将2021-09-01的A列資料更新為0
- 将D列使用numpy.array替代,此列是以
個len(df)
來替代[7]
歡迎關注微信公衆号:資料研發技術,會分享各類資料研發相關的技術