python - 使用熊猫具有不同列的多个文件
问题描述
我有大量不同列的 Excel 文件
例如:
文件 1:
Name | sale | Tips
-------------
sam | 9 | 7
cham | 2 | 2
文件 2:
Name | sale | Items
-------------------
mini | 6 | Tshirt
Lary | 3 | Hat
输出:
Name | sale | Items
--------------------
sam | 9 | Nan
cham | 2 | Nan
mini | 6 | Tshirt
Lary | 3 | Hat
我有 500 个文件要创建到一个数据集中
此代码在一定程度上有效,但除非所有列都相同。
import pandas as pd
import glob,os
import numpy as np
inputFile = 'C:/Users/Desktop/test'
all_workbooks =glob.glob(os.path.join(inputFile,'*.xlsx'))
column_list = []
for files in all_workbooks:
data= pd.read_excel(files,header =0,sheet_name='sheet1')
column_list.append(data)
stack_np = np.vstack(column_list)
newData = pd.DataFrame(stack_np,columns=['Name','Sale'])
print(newData)
如果我在所有文件中都有相同的列,则此代码有效。
如果我有无序的列,任何人都可以帮助我解决问题吗?
解决方案
您需要收集数据帧并在循环后将它们连接起来
all_dfs =[]
wanted_columns = ['Name', 'sale', 'Items']
for files in all_workbooks:
data = pd.read_excel(files,header =0,sheet_name='sheet1')
data = data[wanted_columns] # or skip this line to use all columns
all_dfs.append(data)
master_df = pd.concat(all_dfs)
del all_dfs, data
推荐阅读
- django - 如何使用显示名称搜索选择字段?
- java - 在 ELEMENT_NODE 的情况下,node.getNodeType 无法按预期工作
- logstash - 安装 logstash-filter-rest 消息时显示错误:证书验证失败
- android - 迁移到 New Places SDK 客户端请求 Play 商店的 ACCESS_FINE_LOCATION 权限
- java - 类加载,静态块
- python - 在 Django 命令测试中使用两个不同的数据集修补外部 API 调用
- entity-framework-core - EF Core 可以跟踪非最高投影中的实体吗?
- apache-spark - 基于 Direct Stream 的 SparkStreaming 与 Kafka 仅显示一个 Consumer-ID
- r - R中带有tesseract的OCR无法识别所有换行符
- ruby-on-rails - 如果我可以在 redmine 控制器中的“before action”之后添加“if”