python - 使用 pandas 从 excel 文件生成 csv
问题描述
我一直在尝试从具有这种格式的 excel 生成一个 csv 文件
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 |
我在 python 中使用 pandas,但我有初级编码技能,所以我很难迭代行以生成排除空单元格的 csv
这是我到目前为止将我的 excel 文件完全转换为 csv 文件的代码
import pandas as pd
df = pd.read_excel('excelfile.XLSX', index_col=0, header=None)
df.to_csv('csvfile.csv')
任何的想法?
解决方案
你只需要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
推荐阅读
- sql - SQL Server: table join based on record-dependent values
- mysql - Sequelize And / Or Operators
- javascript - How to stop the grid from loading
- c# - 如何在外部运行进程中更改 PEB 的命令行
- mysql - 将 MSSQL 存储过程转换为 MySQL - CONCAT 问题
- r - 如何从 SSIS-SQL-Query 中的 script.R 文件加载 R 脚本
- node.js - 在 Promise 中调用函数
- flutter - 如何通过小部件添加新的 html 元素?
- javascript - How to read JSON output with the object named "@attributes"?
- python - ValueError: Cannot convert to Excel - Scraper in Python