[英]Reorder columns in pandas pivot table
我有一個使用pivot_table方法創建的pandas數據框。 它的結構如下:
import numpy as np
import pandas
datadict = {
('Imps', '10day avg'): {'All': '17,617,872', 'Crossnet': np.nan, 'N/A': '17,617,872'},
('Imps', '30day avg'): {'All': '17,302,111', 'Crossnet': '110','N/A': '18,212,742'},
('Imps', '3day avg'): {'All': '8,029,438', 'Crossnet': '116', 'N/A': '8,430,904'},
('Imps', 'All'): {'All': '14,156,666', 'Crossnet': '113', 'N/A': '14,644,823'},
('Spend', '10day avg'): {'All': '$439', 'Crossnet': np.nan, 'N/A': '$439'},
('Spend', '30day avg'): {'All': '$468', 'Crossnet': '$0', 'N/A': '$492'},
('Spend', '3day avg'): {'All': '$209', 'Crossnet': '$0', 'N/A': '$219'},
('Spend', 'All'): {'All': '$368', 'Crossnet': '$0', 'N/A': '$381'}
}
df = pandas.DataFrame.from_dict(datadict)
df.columns = pandas.MultiIndex.from_tuples(df.columns)
我嘗試使用以下兩種方法以新訂單重新排序'花費'和'Imps'下的嵌套列,但是盡管沒有拋出任何錯誤,訂單仍保持不變:
df['Spend']=df['Spend'].reindex_axis(['3day avg','10day avg','30day avg','All'],axis=1)
df['Spend']=df['Spend'][['3day avg','10day avg','30day avg','All']]
一種方法是創建MultiIndex並重新索引:
In [11]: mi = pd.MultiIndex.from_product([['Imps', 'Spend'], ['3day avg','10day avg','30day avg','All']])
In [12]: df.reindex_axis(mi, 1)
Out[12]:
Imps Spend
3day avg 10day avg 30day avg All 3day avg 10day avg 30day avg All
All 8,029,438 17,617,872 17,302,111 14,156,666 $209 $439 $468 $368
Crossnet 116 NaN 110 113 $0 NaN $0 $0
N/A 8,430,904 17,617,872 18,212,742 14,644,823 $219 $439 $492 $381
注意: MultiIndex.from_product
在0.13中是新的,如果您使用的舊pandas使用的是舊的pandas,請使用pd.MultiIndex.from_tuples(list(itertools.product(..)))
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.