我有一个数据框“ fpd”,它使用
划分为列['View']
中的唯一值
bookuniques = fpd['View'].unique()
fpdict = {elem: pd.DataFrame for elem in bookuniques}
for key in fpdict.keys():
fpdict[key] = fpd[:][fpd['View'] == key]
数据框看起来像:
Product PG Location Row Group Ph DD Pd TC Variance
C4 CL 01.1 OI OpeningInventory 200 200
PU 01.1 OI OpeningInventory 400 400
MR 01.1 OI OpeningInventory 600 600
NP 01.1 OI OpeningInventory 200 200
PR 01.1 OI OpeningInventory 400 400
PS 01.1 OI OpeningInventory 600 600
PW 01.1 OI OpeningInventory 200 200
我试图为每个这些数据帧分别添加一个求和行。我尝试使用输出将过程包括在内以使用
with pd.ExcelWriter('check2.xlsx') as writer:
for key in fpdict.keys():
fpdict[key].drop(['View'], axis = 1)
fpdict[key].append(fpdict[key].sum(numeric_only = True), ignore_index=True)
temp = fpdict[key]
temp.to_excel(writer, sheet_name = key)
很遗憾,这样做删除索引列[['Product'],['PG'],['Location']]
我希望输出为
Product PG Location Row Group Ph DD Pd TC Variance
C4 CL 01.1 OI OpeningInventory 200 200
PU 01.1 OI OpeningInventory 400 400
MR 01.1 OI OpeningInventory 600 600
NP 01.1 OI OpeningInventory 200 200
PR 01.1 OI OpeningInventory 400 400
PS 01.1 OI OpeningInventory 600 600
PW 01.1 OI OpeningInventory 200 200
TOTAL 2600 2600
答案 0 :(得分:1)
这是我必须做的假设,因为在问题中没有明确指出:
View
列您必须将代码更改为:
with pd.ExcelWriter('check2.xlsx') as writer:
for key in fpdict.keys():
temp = fpdict[key].drop(['View'], axis = 1).reset_index()
temp.append(fpdict[key].sum(numeric_only = True), ignore_index=True) # add sum row
temp.iloc[-1] = temp.iloc[-1].fillna(' ') # replace NaNs with ''
temp.iloc[-1, 1] = 'TOTAL'
fpdict[key] = temp.set_index(['Product', 'PG', 'Location'])
temp.to_excel(writer, sheet_name = key)