在一个目录中,我有几个xlsx文件,我想将它们放在一个单独的xlsx文件中。所以我做了这段代码:
all_data=pd.DataFrame()
for item_excell in arr2:
if item_excell.endswith('.xlsx'):
df=pd.read_excel(item_excell)
all_data=all_data.append(df, ignore_index=True)
all_data.to_excel('final_table.xlsx')
我以前的excell带有标头,我想保留它们,因为使用此代码,我没有得到标头,并且信息混杂在一起。
答案 0 :(得分:2)
尝试一下:
例如,如果您有3个.xlsx
文件:
df1 = pd.read_excel('file 1.xlsx')
df2 = pd.read_excel('file 2.xlsx')
df3 = pd.read_excel('file 3.xlsx')
final_df = pd.concat([df1, df2, df3])
final_df.to_excel('combined file.xlsx')
答案 1 :(得分:0)
其他人已经注意到您的all_data
应该在您的for循环之外,
正如taga提供的答案一样,我将向您展示如何使用Pathlib
(它是在版本3.4中添加到Python中的),并允许使用最少的代码与文件系统进行真正的高级交互。
from pathlib import Path
your_dir = r'c:\path\to\excels' #r for windows.
现在我们利用glob
进行通配符匹配,以使用列表理解功能找到给定位置的所有优势
excels = [f for f in Path.(your_dir).glob('*.xlsx')]
这与
相同excels = []
for file in Path.(your_dir).glob('*.xlsx'):
excels.append(file)
现在您可以连接您的dfs
dfs = [pd.read_excel(frame) for frame in excels)]
final_df = pd.concat(dfs)
# do stuff
final_df.to_excel('file_name.xlsx',index=False)