python - Python Pandas - 同时通过列索引和列标题提取excel数据
问题描述
我正在尝试编写一个从多个 Excel 文件中提取数据的 Pandas 脚本。它们包含 10 到 15 列。从这些列中,我需要第一个在每个文件中具有不同标题的列,以及其他一些始终具有相同标题名称('TOTAL'、'CLEAR'、'NON-CLEAR'和'SYSTEM')但它们被定位的列在不同文件中的不同列索引下。(我的意思是,在其中一个文件中,'TOTAL' 是表中的第 3 列,但在另一个文件中,它是第 5 列)
我知道使用usecols
关键字我可以指定要使用的列,但看起来这个参数只接受标题名称或只接受列索引,并且永远不会将它们组合在一起。
是否可以编写一个语句,同时通过其索引获取第一列,然后通过标题名称获取其他列?
以下语句不起作用:
df = pd.read_excel(file, usecols = [0,'TOTAL', 'CLEAR', 'NON-CLEAR','SYSTEM'])
解决方案
你可以使用pd.read_excel()
两次,而不是加入两个 dfs
df1 = pd.read_excel(file, usecols = [0])
df2 = pd.read_excel(file, usecols = ['TOTAL', 'CLEAR', 'NON-CLEAR','SYSTEM'])
df = pd.concat([df1, df2], axis = 1, join = 'outer')
推荐阅读
- cognos - 在 Cognos 10.2.1 中动态更改报表名称的 pdf 导出
- android - 使用 Dagger2、Espresso 和 Mockito 对 MVVM 架构进行 Android UI 测试
- angular - 以角度 7 显示异步数据
- python-3.x - 根据另一列的数据计算 csv 文件中某一列的值
- c# - C#:为列表框项创建第二个标识符
- module - SystemVerilog 接口 - 模块声明后传递参数
- javascript - 为什么不调用带有 { query: true } 的 mongoose 中间件“pre”remove?
- ruby - 自动获取请求的默认端口
- python-3.x - Matplotlib - 平滑一条线
- python - Python 3 中的映射 lambda