根据单元格值将Pandas DataFrame导出到Excel

时间:2019-04-12 09:44:46

标签: excel python-3.x pandas

我有一个如下所示的数据框。 (由pivot_table()方法得出)

Location Loc 2  Loc 3   Loc 5   Loc 8   Loc 9
Item                    
1   404     317     272     113      449 
3   1,205   870     846     371     1,632 
5   208     218     128     31       268 
7   107     54       57     17       179 
9   387     564     245     83       571 
10  364     280     115     34       252 
16  104     80      72      22       143 
17  111     85      44      10       209 
18  124     182     67      27       256 
19  380     465     219     103      596 

如果您仔细看一下,就会发现缺少位置(例如Loc 1,Loc,4等)和缺少项目(例如2、4、8等)

我要将其导出到我的Excel预定义模板中,该模板具有所有位置和项目,并根据“项目和值”填写表格。

我知道我可以将数据框导出到其他Excel工作表并使用SUMIFS()或INDEX(),MATCH()公式。但是,我想直接从Python / Panda转到excel。

下面应该是导出后的结果

Loc 1   Loc 2   Loc 3   Loc 4   Loc 5   Loc 6   Loc 7   Loc 8   Loc 9
1   0   404 317 0   272 0   0   113 449
2   0   0   0   0   0   0   0   0   0
3   0   1205    870 0   846 0   0   371 1632
4   0   0   0   0   0   0   0   0   0
5   0   208 218 0   128 0   0   31  268
6   0   0   0   0   0   0   0   0   0
7   0   107 54  0   57  0   0   17  179
8   0   0   0   0   0   0   0   0   0
9   0   387 564 0   245 0   0   83  571
10  0   364 280 0   115 0   0   34  252
11  0   0   0   0   0   0   0   0   0
12  0   0   0   0   0   0   0   0   0
13  0   0   0   0   0   0   0   0   0
14  0   0   0   0   0   0   0   0   0
15  0   0   0   0   0   0   0   0   0
16  0   104 80  0   72  0   0   22  143
17  0   111 85  0   44  0   0   10  209
18  0   124 182 0   67  0   0   27  256
19  0   380 465 0   219 0   0   103 596
20  0   0   0   0   0   0   0   0   0

1 个答案:

答案 0 :(得分:3)

DataFrame.reindex与数组或列表中的新索引和列值一起使用:

idx = np.arange(1, 21)
cols = [f'Loc {x}' for x in np.arange(1, 10)]

df = df.reindex(index=idx, columns=cols, fill_value=0)
print (df)
    Loc 1  Loc 2  Loc 3  Loc 4  Loc 5  Loc 6  Loc 7  Loc 8  Loc 9
1       0    404    317      0    272      0      0    113    449
2       0      0      0      0      0      0      0      0      0
3       0  1,205    870      0    846      0      0    371  1,632
4       0      0      0      0      0      0      0      0      0
5       0    208    218      0    128      0      0     31    268
6       0      0      0      0      0      0      0      0      0
7       0    107     54      0     57      0      0     17    179
8       0      0      0      0      0      0      0      0      0
9       0    387    564      0    245      0      0     83    571
10      0    364    280      0    115      0      0     34    252
11      0      0      0      0      0      0      0      0      0
12      0      0      0      0      0      0      0      0      0
13      0      0      0      0      0      0      0      0      0
14      0      0      0      0      0      0      0      0      0
15      0      0      0      0      0      0      0      0      0
16      0    104     80      0     72      0      0     22    143
17      0    111     85      0     44      0      0     10    209
18      0    124    182      0     67      0      0     27    256
19      0    380    465      0    219      0      0    103    596
20      0      0      0      0      0      0      0      0      0