Python 通过删除数据帧中的某些级别,将多级列缩减为单个级别
我有一个如下所示的数据帧。 数据= 真正的数据帧要长得多 我应用了透视表,如下所示Python 通过删除数据帧中的某些级别,将多级列缩减为单个级别,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个如下所示的数据帧。 数据= 真正的数据帧要长得多 我应用了透视表,如下所示 table = (pd.pivot_table(data, index = ['SAMPLE'], columns = ['MATERIAL'], values = ['MAT_WEIGHT'], aggfunc = {'MAT_WEIGHT':np.sum})).fillna(0) 把桌子放在下面。 表= 我想将表从多个级别减少到一个级别列。 我想要的最后一个数据帧如下所示 table = (pd.piv
table = (pd.pivot_table(data, index = ['SAMPLE'],
columns = ['MATERIAL'], values = ['MAT_WEIGHT'],
aggfunc = {'MAT_WEIGHT':np.sum})).fillna(0)
把桌子放在下面。
表=
我想将表从多个级别减少到一个级别列。
我想要的最后一个数据帧如下所示
table = (pd.pivot_table(data, index = ['SAMPLE'],
columns = ['MATERIAL'], values = ['MAT_WEIGHT'],
aggfunc = {'MAT_WEIGHT':np.sum})).fillna(0)
表_最终=
SAMPLE MAT1 MAT2 MAT3 MAT4
SAM1 100 50 80 30
SAM2 80 50 120 25
SAM3 78 58 65 25
如何做到这一点?
此处给出的数值仅用于可视化目的,不精确。避免在列表下使用列名,以避免从中进行多索引,同时添加填充值参数:
table = pd.pivot_table(data,
index ='SAMPLE',
columns = 'MATERIAL',
values = 'MAT_WEIGHT',
aggfunc = np.sum,
fill_value=0)
print (table)
MATERIAL MAT1 MAT2 MAT3
SAMPLE
SAM1 60 0 35
SAM2 0 60 0
最后一个用于索引到列和删除列名,可以使用:
避免在列表下使用列名以避免多重索引,同时添加fill_值参数:
table = pd.pivot_table(data,
index ='SAMPLE',
columns = 'MATERIAL',
values = 'MAT_WEIGHT',
aggfunc = np.sum,
fill_value=0)
print (table)
MATERIAL MAT1 MAT2 MAT3
SAMPLE
SAM1 60 0 35
SAM2 0 60 0
最后一个用于索引到列和删除列名,可以使用:
table = table.reset_index().rename_axis(None, axis=1)