我有很多excel文件(大约30K),每个文件都有项目属性(一个excel有3K行)。所有excel文件中都存在一些列。此外,还有更多列可能不存在于所有列中。我想将它们合并到一个数据框中。
我尝试使用pandas.read_excel读取每个数据帧,然后通过pandas.append合并它们,这不仅非常慢,而且对某些文件也失败。
使用的代码:
all_data = pd.DataFrame()
dfs = []
for f in glob.glob("sheets_*.xlsx"):
temp = pd.read_excel(f, sheetname='ItemDetail', skiprows=[0, 2],index_col=0)
temp = clean_data(temp) # Do some cleaning here.
dfs.append(temp)
all_data = all_data.append(dfs,ignore_index=True)
示例: -
Excel 1
| Item Id | Source | country | Item Name |Item Weight |Cost |
----------------------------------------------------------------------
| 1 | x | India | Pen | 10 | 100 |
| 2 | y | Australia | Pencil | 15 | 50 |
| 3 | x | Germany | Eraser | 5 | 20 |
| 4 | y | India | Box | 80 | 200 |
----------------------------------------------------------------------
Excel 2
| Item Id | Source | country | Item Name |Item Weight |Length| Width |
|-----------------------------------------------------------------------------|
| 1 | x | Australia | chair | 100 | 20 | 26 |
| 2 | y | Australia | cupboard | 150 | 30 | 40 |
| 3 | x | Germany | Table | 500 | 60 | 50 |
| 4 | y | Germany | Tool | 360 | 20 | 80 |
|-----------------------------------------------------------------------------|
最终合并数据:
| Item Id | Source | country | Item Name |Item Weight |Length| Width | Cost |
|------------------------------------------------------------------------------------|
| 10 | x | Australia | chair | 100 | 20 | 26 | NAN |
| 26 | y | Australia | cupboard | 150 | 30 | 40 | NAN |
| 38 | x | Germany | Table | 500 | 60 | 50 | NAN |
| 41 | y | Germany | Tool | 360 | 20 | 80 | NAN |
| 1 | x | India | Pen | 10 | NAN | NAN | 100 |
| 2 | y | Australia | Pencil | 15 | NAN | NAN | 50 |
| 3 | x | Germany | Eraser | 5 | NAN | NAN | 20 |
| 4 | y | India | Box | 80 | NAN | NAN | 200 |
|------------------------------------------------------------------------------------|
请注意,在此示例中,所有列中都包含项目ID,源和国家/地区等列,但所有列中可能不会出现其他列。
原始数据中的列数也大约为150.每张表中的行数约为3000,我有大约35K这样的表。因此,我希望将所有这些数据加载到pandas中。