pandas索引和選擇資料
使用pandas索引和選擇資料時,總是需要百度,因此決定對pandas.DataFrame中的索引和選擇方法做個總結。所用的pandas版本號為0.20.1
pandas中有三種索引方法:.loc
,.iloc
和[]
,注意:.ix
的用法在0.20.0中已經不建議使用了!
下文中全部使用一個DataFrame來舉例:
.loc用法
.loc
主要是基於標籤(label)的,包括行標籤(index)和列標籤(columns),即行名稱和列名稱,可以使用df.loc[index_name,col_name]
,選擇指定位置的資料,其它的用法有:
1. 使用單個標籤。如果.loc[]
中只有單個標籤,那麼選擇的是某一行。 df.loc[3]
選擇的是index名為‘3’的一行,注意這裡的’3’是index的名稱,而不是序號
2. 使用標籤的list:同樣是只選擇行
3. 標籤的切片物件:與通常的python切片不同,在最終選擇的資料中包含切片的start和stop
4. 布林型的陣列:通常用於篩選符合某些條件的行
5. 可呼叫的函式
lambda
表示式語法:
lambda 傳入引數 : 返回的計算表示式
iloc用法
iloc
是基於位置的索引,利用元素在各個軸上的索引序號進行選擇,序號超出範圍會產生IndexError
,切片時允許序號超過範圍,用法包括:
1. 使用整數:與.loc
相同,如果只使用一個維度,則對行選擇,下標從0開始
2. 使用列表或陣列,同樣是對行選擇
3. 元素為整數的切片物件:與.loc
不同的是,這裡下標為stop
的資料不被選擇
也可以對列進行切片:
4. 使用布林陣列進行篩選:注意這裡可以使用list
或者array
,使用Series
的話會出錯,NotImplementedError
或者ValueError
,前者是Series的index與待切片DataFrame的index不同時,後者是index相同時報的錯,可以自己實現體會一下。與.loc
使用布林陣列,可以使用list
, array
,也可以使用Series
,使用Series
時index需要一致,否則會報IndexingError
5.使用可呼叫函式
切片操作[]
[]
操作只能輸入一個維度,不能用逗號隔開輸入兩個維度:
- 使用列名:
.loc
和iloc
只輸入一維時選取的是行,而[]
選取的是列,並且必須使用列名
- 使用布林陣列:bool陣列的index需要和dataframe的index一致,此時選取的是行
因此可以用來篩選符合條件的行:
- 使用列名:
避免
chained assignment
在對資料賦值使可以有以下兩種操作:
df.loc[df.C>0.5,'C']=0.6
df[df.C>0.5][['C']]=0.6
上面的操作可以在df上直接修改資料,而下面的操作被稱為chained assignment
,會產生SettingWithCopyWarning
,官網上的解釋:indexing-view-versus-copy。直觀來說就使用chained assignment
無法預測是否能對資料df進行修改,使用loc
一定是直接在df上修改資料,因此建議使用loc
相關文章
- pandas 學習 第14篇:索引和選擇資料索引
- 資料庫索引選擇策略資料庫索引
- 44 pandas DataFrame分層索引切片選擇(tcy)索引
- 唯一索引和普通索引的選擇索引
- MySQL資料庫索引選擇使用B+樹MySql資料庫索引
- 普通索引和唯一索引,應該怎麼選擇?索引
- 表資料量影響MySQL索引選擇MySql索引
- 如何選擇普通索引和唯一索引《死磕MySQL系列 五》索引MySql
- ICI選擇Woolpert收集資料和影像
- Elasticsearch 中為什麼選擇倒排索引而不選擇 B 樹索引Elasticsearch索引
- MySQL 資料型別分類和選擇MySQL 資料型別
- pandas:多層索引索引
- 使用C#選擇資料夾、開啟資料夾、選擇檔案C#
- PostgreSQL資料庫多列複合索引的欄位順序選擇原理SQL資料庫索引
- MySQL索引選擇及規則整理MySql索引
- 微服務間如何選擇推送和拉取資料微服務
- Uniapp 城市選擇JSON資料APPJSON
- 資料遷移方案選擇
- PostgreSQL:資料庫的選擇SQL資料庫
- pandas(3):索引Index/MultiIndex索引Index
- [20190827]函式索引與選擇率.txt函式索引
- wpf winform 選擇檔案或選擇資料夾程式碼ORM
- 資料跟蹤應該是選擇加入而不是選擇退出
- 資料結構32:選擇排序資料結構排序
- pandas 設定二級索引索引
- 索引選擇度問題最佳化整理索引
- [20200326]為什麼選擇這個索引.txt索引
- MySQL innodb如何選擇一個聚簇索引MySql索引
- 資料結構和演算法:03.冒泡、選擇排序資料結構演算法排序
- 如何選擇大資料分析軟體大資料
- 爬蟲中資料清洗的選擇爬蟲
- Python - pandas 資料分析Python
- mysql索引為啥要選擇B+樹 (下)MySql索引
- mysql索引為啥要選擇B+樹 (上)MySql索引
- pandas 處理資料和crc16計算
- Pandas庫基礎分析——資料生成和訪問
- Lesson8——Pandas reindex重置索引Index索引
- 46 pandas reindex-重新索引(tcy)Index索引