44 pandas DataFrame分層索引切片選擇(tcy)
1.總結:以2個層次標籤為例說明
obj[(label,label)]/obj.loc[(label,label)] #label為單個標籤,標籤切片,標籤列表;注1
obj[(loc,loc)]/obj.iloc[(loc,loc)] #loc為int,int切片; 注1
obj[bool_vec] #bool陣列選擇
s.a1.b1 #注2
df.C1.D1
s.get(label) #label為最外層標籤,為單標籤或標籤列表;或為切片
df.get(label) #label為最外層列標籤,為單標籤或標籤列表;或為切片;僅能選取行或列
注1:有幾層就有幾個引數,從前向後依次為第一層,第二層,...
注2:從最外層依次向內取,有幾層就有幾個'.'
例項3:資料幀
iter_rows = [['a1', 'a2'], ['aa1', 'aa2']]
iter_columns = [['A1', 'A2'], ['AA1', 'AA2']]
index_row=pd.MultiIndex.from_product(iter_rows, names=['RN1', 'RN2'])
index_col =pd.MultiIndex.from_product(iter_columns, names=['CN1', 'CN2'])
df = pd.DataFrame(np.arange(10,26).reshape((4,4)), index=index_row, columns=index_col)
CN1 A1 A2
CN2 AA1 AA2 AA1 AA2
RN1 RN2
a1 aa1 10 11 12 13
aa2 14 15 16 17
a2 aa1 18 19 20 21
aa2 22 23 24 25
# 例項1:df[];‘'(:)'選擇行,'[,]'選擇列
# 例項1.1:int:int - 選取行(僅僅能選取行)
df[0:2] #選取第1,2行
# 例項1.2:索引- 選取行
df['a2':'a2'] #選取(a2,aa1- aa2) 2行
df[('a2','aa1'):('a2','aa1')] #選取(a2,aa1) 1行
df[('a2','aa1'):('a2','aa2')] #選取(a2,aa1) , (a2,aa2) 2行
# 例項1.3:列名- 選擇列
df[('A2','AA1')] #選取(A2,AA1) 1列
df[[('A2','AA1'),('A2','AA2')]] #選取(A2,AA1),(A2,AA2) 2列
# 例項1.4:索引+列名 - 選擇行列
result1=df[('a1','aa2'):('a1','aa2')][[('A1','AA2'),('A1','AA2')]]#選取第2行第2列數值(結果列多索引廣播)
result1=df[[('A1','AA2'),('A1','AA2')]][('a1','aa2'):('a1','aa2')]#選取第2列第2行數值(結果行多索引廣播)
result2=df[('a1','aa2'):('a2','aa1')][[('A1','AA2'),('A2','AA1')]]#選取行列
# result1 result2
CN1 A1 CN1 A1 A2
CN2 AA2 AA2 CN2 AA2 AA1
RN1 RN2 RN1 RN2
a1 aa2 15 15 a1 aa2 15 16
a2 aa1 19 20
例項2:loc
#索引名列名可為str,或[str],或範圍(str:str)
# 例項2.1:單行索引,或單行索引list - 選擇行
df.loc['a2'] #選取(a2,aa1- aa2) 2行
df.loc[('a2','aa1')] #選取(a2,aa1) 1行
df.loc[[('a2','aa1'),('a2','aa2')]] #選取(a2,aa1) , (a2,aa2) 2行
# 例項2.2:索引範圍- 選擇行
df.loc[('a1','aa2'):('a2','aa2')]#選取2,3,4行
# 例項2.3:單列名,或單列名list - 選擇列
df.loc[:,'A2'] #選取(A2,AA1-AA2) 2列
df.loc[:,('A2','AA1')] #選取(A2,AA1) 1列,Series
df.loc[:,[('A2','AA1'),('A2','AA2')]]#選取(A2,AA1-AA2) 2列
# 例項2.4:列名範圍-選擇列
df.loc[:,('A1','AA2'):('A2','AA2')]#選取第2,3,4列資料
# 例項2.5:索引名+列名-選擇行列或標量
df.loc[('a1','aa1'),('A2','AA1')] #選取第1行第3列 =12 標量
result1=df.loc[[('a1','aa2'),('a2','aa2')],('A2','AA1')] #選取行列 返回Series
result2=df.loc[('a1','aa2'):('a2','aa2'),('A2','AA1')] #選取行列 返回Series
result3=df.loc[[('a1','aa2'),('a2','aa2')],('A1','AA2'):('A2','AA2')]#選取行列
# result1 result2 result3
RN1 RN2 RN1 RN2 CN1 A1 A2
a1 aa2 16 a1 aa2 16 CN2 AA2 AA1 AA2
a2 aa2 24 a2 aa1 20 RN1 RN2
aa2 24 a1 aa2 15 16 17
Name: (A2, AA1), dtype: int32 a2 aa2 23 24 25
# 例項3:iloc
# 例項3.1:索引名int,[int],[int:int]-選取行
df.iloc[1] #選取第2行
df.iloc[[0,3]] #選取第1,4行
df.iloc[0:3] #選取第1,2,3行
# 例項3.2:列名int,[int],[int:int]-選取列
df.iloc[:,1] #選取第2列
df.iloc[:,[0,3]] #選取第1,4列
df.iloc[:,0:3] #選取第1,2,3列
# 例項3.3:索引名+列名-選取行列
df.iloc[[1],[1]] #第2行第2列的值15 返回DataFrame
df.iloc[[1,2],[1,2]] #選取行列
df.iloc[[1,2],0:3] #選取行列
CN1 A1 A2 CN1 A1 A2
CN2 AA2 AA1 CN2 AA1 AA2 AA1
RN1 RN2 RN1 RN2
a1 aa2 15 16 a1 aa2 14 15 16
a2 aa1 19 20 a2 aa1 18 19 20
# 例項4:
# 例項4.1:iat選取元素 不受多索引影響
df.iat[1,2] #選取第2行第3列數值=16
# 例項4.2:屬性訪問
df.A1 #選取第1,2列
df.A1.AA1 #選取第1列
# 例項4.3:get函式 列名或列名list或切片
#僅能選取行或列
df.get('A1') #選取第1,2列
df.get(('A1','AA1')) #選取第一列 返回Series
df.get([('A1','AA2'),('A2','AA2')])#選取第2,4列
df.get(slice(0,3)) #選取第1,2,3行
相關文章
- 46 pandas reindex-重新索引(tcy)Index索引
- pandas索引和選擇資料索引
- pandas:多層索引索引
- pandas 學習 第14篇:索引和選擇資料索引
- Pandas - DataFrame.loc
- Pandas DataFrame常用方法
- pandas筆記(一)-- 大的國家(邏輯索引、切片)筆記索引
- 【pandas學習筆記】DataFrame筆記
- 使用Pandas DataFrame輸出報告
- Pandas 基礎 (2) - Dataframe 基礎
- Elasticsearch 中為什麼選擇倒排索引而不選擇 B 樹索引Elasticsearch索引
- 唯一索引和普通索引的選擇索引
- jQuery選擇器之層次選擇器jQuery
- pandas中dataframe與dict相互轉換
- pandas.DataFrame.groupby函式應用函式
- DataFrame刪除複合索引索引
- 資料庫索引選擇策略資料庫索引
- python pandas DataFrame-A 更新 DataFrame-B中指定列相同的資料Python
- 切片操作專題之numpy、pandas
- pandas -- DataFrame的級聯以及合併操作
- pandas | DataFrame中的排序與彙總方法排序
- pandas dataframe 時間欄位 diff 函式函式
- Pandas高階教程之:Dataframe的合併
- Pandas 基礎 (8) - 用 concat 組合 dataframe
- jQuery選擇器介紹:基本選擇器、層次選擇器、過濾選擇器、表單選擇器jQuery
- Python的pandas的Dataframe使用groupby分組並求每組的統計值Python
- MySQL索引選擇及規則整理MySql索引
- 普通索引和唯一索引,應該怎麼選擇?索引
- Python Numpy 切片和索引(高階索引、布林索引、花式索引)Python索引
- pandas | 詳解DataFrame中的apply與applymap方法APP
- pandas 實現兩個dataframe相減的方式
- Python, pandas: how to sort dataframe by index// Merge two dataframes by indexPythonIndex
- Pandas 基礎 (3) - 生成 Dataframe 的幾種方式
- pandas(3):索引Index/MultiIndex索引Index
- [20190827]函式索引與選擇率.txt函式索引
- 表資料量影響MySQL索引選擇MySql索引
- 程式語言分類和選擇有哪些?我們選擇python而不直接學習底層語言?Python
- python中pandas.Dataframe合併的方法有哪些?Python