Создать CSV из файла Excel с pandas - PullRequest
0 голосов
/ 30 марта 2020

Я пытался сгенерировать CSV-файл из Excel, который имеет этот формат

ConceptId   |   31   |   32   |   33   |   34   |   35   |   36   |
EmployeeId  |        |        |        |        |        |        |
    1       |        |  44.00 |  56.00 |        |        |        |
    2       |        |        |        |        |        |        |
    3       |        |        |  44.00 |  5.00  |  5.00  |        |
    4       | 445.00 |  5.00  |        |        |        |        |
    5       |        |        |  65.00 |  56.00 |  65.00 |        |

Поэтому я хочу, чтобы CSV выглядел следующим образом

EmployeeId  |   ConceptId   |  Amount   |  
    1       |       32      |  44.00    |
    1       |       33      |  56.00    |
    3       |       33      |  44.00    |
    3       |       34      |   5.00    |
    4       |       31      | 445.00    |
    4       |       32      |   5,00    |
    5       |       33      |  65.00    |
    5       |       34      |  56,00    |
    5       |       35      |  65,00    |

Я используя pandas в python, но у меня есть навыки кодирования младшего уровня, поэтому мне было сложно перебирать строки, чтобы сгенерировать CSV, который исключает пустые ячейки

Это код, который я до сих пор преобразовать мой файл Excel в CSV-файл точно так же, как он

import pandas as pd

df = pd.read_excel('excelfile.XLSX', index_col=0, header=None)

df.to_csv('csvfile.csv')

Есть идеи?

1 Ответ

0 голосов
/ 30 марта 2020

Вам просто нужно stack фрейм данных:

df = pd.read_excel('excelfile.XLSX', index_col=0, header=None)
df = df.stack().rename('Amount').reset_index()
df.to_csv('csvfile.csv', index=False)

Полученный CSV-файл будет:

EmployeeId,ConceptId,Amount
1,32,44.0
1,33,56.0
3,33,44.0
3,34,5.0
3,35,5.0
4,31,445.0
4,32,5.0
5,33,65.0
5,34,56.0
5,35,65.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...