Экспорт DataFrame панд в Excel на основе значений ячеек - PullRequest
2 голосов
/ 12 апреля 2019

У меня есть датафрейм, как показано ниже. (результат 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 

Если вы посмотрите на него поближе, то пропущенные Локации (например, Лок 1, Лок, 4 и т. Д.) И недостающие Предметы (например, 2, 4,8 и т. Д.)

Я хочу экспортировать это в предопределенный шаблон Excel, в котором есть все местоположения и элементы, и заполнить таблицу на основе элементов и значений.

Я знаю, что могу экспортировать фрейм данных в другой лист Excel и использовать формулы SUMIFS () или INDEX (), MATCH (). но я хочу сделать это напрямую из Python / Panda, чтобы преуспеть.

Ниже должен быть результат после экспорта

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 Ответ

3 голосов
/ 12 апреля 2019

Используйте 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...