3-Pandas層次化索引&拼接
阿新 • • 發佈:2020-12-12
Pandas層次化索引
-
建立多層索引
-
隱式構造
-
最常見的方法是給DataFrame建構函式的index引數傳遞兩個或更多的陣列
-
df = DataFrame( data=np.random.randint(0,100,size=(6,6)), index=[['一班','一班','一班','二班','二班','二班'],['張三','李四','王五','趙六','田七','孫八']], columns=[['期中','期中','期中','期末','期末','期末'],['語文','數學','英語','政治','歷史','地理']] )
-
-
顯式構造
-
使用陣列
-
df = DataFrame( data=np.random.randint(0,100,size=(6,6)), index=pd.MultiIndex.from_arrays([['一班','一班','一班','二班','二班','二班'],['張三','李四','王五','趙六','田七','孫八']]), columns=[['期中','期中','期中','期末','期末','期末'],['語文','數學','英語','政治','歷史','地理']] )
-
-
使用tuple
-
df = DataFrame( data=np.random.randint(0,100,size=(6,6)), index=pd.MultiIndex.from_tuples( ( ('一班','張三'),('一班','李四'),('一班','王五'), ('二班','趙六'),('二班','田七'),('二班','孫八'), ) ), columns=[['期中','期中','期中','期末','期末','期末'],['語文','數學','英語','政治','歷史','地理']] )
-
-
使用product
-
df = DataFrame( data=np.random.randint(0,100,size=(6,6)), # 笛卡爾積 index=pd.MultiIndex.from_product([['一班','二班'],['張三','李四','王五']]), columns=pd.MultiIndex.from_product([['期中','期末'],['語文','數學','英語']]) )
-
-
-
Series也可以建立多層次索引
-
index=[['一班','一班','一班','二班','二班','二班'],['張三','李四','王五','趙六','田七','孫八']] s=Series(data=np.random.randint(0,100,size=6),index=index)
-
-
多層列索引
- 除了行索引index,列索引columns也能用同樣的方法建立多層索引
-
多層索引物件的索引與切片操作
- Series的操作
- 對於Series來說,直接中括號[]與使用.loc[]完全一樣,推薦使用.loc中括號索引和切片
- 索引
- 顯式索引
- s['一班']['張三']
- s['一班','李四']
- s.loc['一班','李四']
- s[['一班','二班']]
- 最外層索引依然保留
- s.loc[['一班','二班']]
- 隱式索引
- s[1]
- s.iloc[4]
- s[[2,4]]
- 最外層索引依然保留
- s.iloc[[2,4]]
- 顯式索引
- 切片
- 隱式切片
- s[1:5]
- s.iloc[1:5]
- 建議使用隱式切片
- 直接對最內層索引切片
- 顯示切片
- 預設只能對外層索引切片
- s['一班':'二班']
- 隱式切片
- DataFrame的操作
- 索引
- 可以直接使用列名稱來進行列索引
- 使用索引:優先考慮列索引
- df['期末']
- df['期末']['英語']
- df['期末','英語']
- df[('期末','英語')]
- 建議使用
- df.期末.英語
- df[('期末','英語')][2]
- 行索引(必須加loc或iloc)
- df.loc[('一班','王五'),('期末','英語')]
- 建議使用
- df.loc[('一班','王五'),('期末','英語')]
- 切片
- 建議使用隱式切片
- 預設行切片
- df[1:4]
- df.iloc[1:4]
- df['一班':'二班']
- df.loc['一班':'二班']
- df[('一班','張三')
- 索引
- Series的操作
-