pandas操作——重塑層次化索引
重塑或軸向旋轉指的是用於重新排列表格型數據的基礎運算。
層次化索引能夠為DataFrame數據的重排任務提供一種就有良好一致性山東方式。主要功能有:
1、stack:將數據的列「旋轉」為行
2、unstack:將數據的行「旋轉」為列
下面是一個DataFrame對象,其中行列索引均為字元串:
使用stack方法將列轉為行,得到一個Series:
對於一個層次化索引的Series,可以用unstack將其重排為一個DataFrame:
默認情況下,unstack操作的是內層(stack也是如此)。傳入分層級別的編號或名稱即可對其他級別進行unstack操作:
如果在分組中找不到級別值,則unstack操作會引入缺失數據:
stack默認會濾除缺失數據:
對DataFrame進行unstack操作時,作為旋轉軸的級別將會成為結果中最低級別:
源碼:
# coding: utf-8nn# ### 重塑層次化索引nn# stack:將數據的列「旋轉」為行n# n# unstack:將數據的行「旋轉」為列nn# In[1]:nnimport numpy as npnfrom pandas import Series,DataFramenimport pandas as pdnnn# In[2]:nndata = DataFrame(np.arange(6).reshape((2,3)),n index=pd.Index([Ohio,Colorado],name=state),n columns=pd.Index([one,two,three],name=number))nprint(data)nnn# In[3]:nn# 使用stack方法將列轉為行nresult = data.stack()nprint(result)nnn# In[4]:nn# 對於層次化索引的Series,使用unstack將其重排為DataFrame對象nresult.unstack()nnn# In[5]:nn# 傳入分層級別編號或名稱進行unstack操作nresult.unstack(0)nnn# In[6]:nn# 或傳入名稱進行unstack操作nresult.unstack(state)nnn# In[7]:nn# 如果在分組中找不到級別值,則unstack操作會引入缺失數據ns1 = Series([0,1,2,3],index=[a,b,c,d])ns2 = Series([4,5,6],index=[c,d,e])ndata2 = pd.concat([s1,s2],keys=[one,two])nprint(data2)ndata2.unstack()n
推薦閱讀: