pivot_table可以實(shí)現(xiàn)Excel數(shù)據(jù)透視表的功能,但是經(jīng)過(guò)pivot_table函數(shù)處理后的dataframe的列是多層索引,需要轉(zhuǎn)化成單層索引,具體步驟如下:
1、使用pivot_table函數(shù),建立數(shù)據(jù)透視表
df_1為數(shù)據(jù)源,包含5列,amount列為數(shù)值列,用于聚合;
創(chuàng)建數(shù)據(jù)透視表,index=['group_series', 'buy_no'],columns=['xmonth'],NA值用0填充,結(jié)果如下:

df_1_out=pd.pivot_table(df_1, index=['group_series', 'buy_no'], columns=['xmonth'], values=['amount'], aggfunc='sum', fill_value=0)
df_1_out

2、列索引處理
# 查看列索引
df_1_out.columns

# 查看一級(jí)列索引
df_1_out.columns.levels[0]
# 查看二級(jí)列索引
df_1_out.columns.levels[1]
# 過(guò)濾一級(jí)列索引
df_1_out.columns=df_1_out.columns.droplevel(level=0)

查看一級(jí)列索引

查看二級(jí)列索引

過(guò)濾一級(jí)列索引
3、行索引處理
# 查看行索引
df_1_out.index

# 重置行索引
df_1_out.reset_index(inplace=True)
df_1_out.index

重置行索引
最終數(shù)據(jù)結(jié)果如下:

最終結(jié)果
pivot_table()簡(jiǎn)介:
DataFrame.pivot_table(values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All')values:要聚合的列或列的列表
index:數(shù)據(jù)透視的index,從原始數(shù)據(jù)的列中篩選
columns:數(shù)據(jù)透視表的columns,從原始數(shù)據(jù)的列中篩選
aggfunc:用于聚合的函數(shù),默認(rèn)為numpy,mean,支持numpy計(jì)算方法
fill_value:填充N(xiāo)A值,默認(rèn)不填充
margins:添加行列的總計(jì),默認(rèn)不顯示
dropna:如果整行都為NA值,則進(jìn)行丟棄,默認(rèn)丟棄
margins_name:在margins參數(shù)為true時(shí),用來(lái)修改margins的名稱(chēng)