我正在尝试阅读多个excel文件。每次读取一个excel文件时,我想将其附加到另一个excel文件中。最后,我应该得到一个包含所有excel文件内容的数据框。
我怎么能在for循环中做到这一点?
这是我的尝试:
for i in range(1,10):
temp = pd.read_excel(path[i])
temp_final=temp
这里的想法是让temp_final包含所有excel文件的内容。类似于temp_final=[excelfile1, excelfile2]
pd.concat(temp_final)
我欢迎任何有关如何完成此for
循环的想法。非常感谢
答案 0 :(得分:2)
我的建议是不,以便不断附加到现有数据框。
将数据帧读入列表,然后在一次调用中连接它们会更有效:
dfs = [pd.read_excel(path[i]) for i in range(1, 10)]
df = pd.concat(dfs, ignore_index=True)
替代语法:
dfs = list(map(pd.read_excel, path[:10]))
答案 1 :(得分:0)
我想到了这个答案。
temp=pd.read_excel(path[0])
for i in range(1,2):
print(i)
temp1 = pd.read_excel(path[i])
temp=temp.append(temp1)
以这种方式做循环是否有意义?
答案 2 :(得分:0)
我在一个文件夹中有大约1000个excel文件:
C:/ BD / KEN
所有文件的命名格式为:
'肯<#>日期为.xlsx'
我需要从第一张表中读取所有文件,表格,然后将所有文件合并到一个数据框中以进行进一步操作,并具有一个可以使用的BIG excel文件:
import pandas as pd
import os
#list of <#> series of excel files (around 1000 files total)
names = ['1125','1126','1127']
#column names
ColNames = ['a', 'b', 'c','d','e','f','g','h']
#empty dataframe
df = pd.DataFrame(columns=ColNames)
for x,y,z in os.walk('C:/BD/KEN'):
for i in z:
if i.split()[1] in names:
print(i)
try:
temp = pd.read_excel('C:/BD/KEN'+i)
except:
print('ALERT')
df.append([temp])
df.to_excel('C:/BD/TOTAL.xlsx', index=None)
print('DONE")
os.walk生成元组(文件夹路径,文件夹名称,文件名)
所以'z'是文件名str