我的需求:
希望得到一个利用python提取excel中的特定区域的数据,并将提取的数据并排输出。
我的知识范围内,好像是需要pandas、list、dateframe等
举例:
一个文件夹中有20个数据格式相同的excel文件,从这20个excel的“sheet1”中提取 A1:E50 这块区域的数据。
然后输出的结果是,这20个A1:E50的数据,按照文件的顺序并排按顺序依次排列。
大致意思如下图所示
谢谢各位解答
看了几位的方法,自己尝试了一下,出现下图的问题,请问如何解决
我把问题描述清楚一些:
1、有一个文件夹,里面有20个excel文件、每个excel文件里有多个sheet
2、如下图,我需要每个excel文件里“利润表”这个sheet中的D3:G50这篇区域的数据。
3、最后将结果导出到新的excel文件中,按照文件夹中每个excel的顺序将利润表中D3:G50这片区域的数据,并排向右排列,如下图所示,(红框里的文件名是为了提问,方便理解,我手动打上去的)
操作Excel的话,推荐用openpyxl除了能读取,Excel有的公式、样式设置……功能它都有
实现代码:
import pandas as pd
import os
dfs = pd.DataFrame()
# os.walk(file_path) 深度遍历file_path下的所有子文件夹及文件
for root_dir, sub_dir, files in os.walk(r'C:\Users\gnnEx\Desktop\test'):
for file in files:
if file.endswith(".xlsx"):
# 构造绝对路径
file_name = os.path.join(root_dir, file)
print(file_name)
# 读取sheet页
df = pd.read_excel(file_name, sheet_name='Sheet1', header=None)
print(df)
dfs = pd.concat([dfs, df], axis=1)
print(dfs)
打印输出:
D:\Anaconda3\envs\python37\python.exe F:/NewDevelopment/test_py/test/tmp_pandas.py
C:\Users\gnnEx\Desktop\test\f1.xlsx
0 1
0 A A
1 A A
C:\Users\gnnEx\Desktop\test\f2.xlsx
0 1
0 B B
1 B B
C:\Users\gnnEx\Desktop\test\f3.xlsx
0 1
0 C C
1 C C
0 1 0 1 0 1
0 A A B B C C
1 A A B B C C
Process finished with exit code 0
python 如何提取多个excel表中内容合并处理
可以借鉴下
https://blog.csdn.net/weixin_41744624/article/details/113643450
对的,是需要。提供实例【利用Python+Pandas实现从一个excel表中提取列形成新表】,链接:https://blog.csdn.net/qq_39541326/article/details/107221834?spm=1001.2101.3001.6650.12&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-12-107221834-blog-125292493.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-12-107221834-blog-125292493.pc_relevant_3mothn_strategy_recovery&utm_relevant_index=19
下面两个路径改一下就可以了,另外注意一下你的"sheet1" 是不是小写的
import pandas as pd
path1='F:/ZZF/EXCELS/' ##文件路径
path2='F:/ZZF/result.xlsx' ##结果保存路径路径
fs=os.listdir(path1)
df0=pd.DataFrame()
for f in fs:
df1=pd.read_excel(f,sheet_name='sheet1',header=None)
df0=pd.concat([df0,df1.iloc[:50,:5]],axis=1)
df0.to_excel(path2,header=None,index=0)
报错那个,把 \ 换成 / 或者 \ ,向楼上那位答主那样:path1='F:/ZZF/EXCELS/'
实现代码如下:
import pandas as pd
import glob
global df_concat
# 这里假设你把存放excel的那个文件夹放在D盘下,文件夹指的是你存放excel的那个文件的名字
file_list = glob.glob('D:/文件夹/*.xlsx')
num = 1
for file in file_list:
# header=2表示从表格的第三行开始读取数据,并把第三行作为表头, 因为想要的数据就是从第三行开始的
# usecols='C:G'表示只读取C列到G列这几列的数据, 因为我们想要的就是这几列的数据
df = pd.read_excel(file, sheet_name='利润表', header=2, usecols='C:G')
df_sel = df.iloc[:47, :]
# print(df_sel)
if num == 1:
df_concat = df_sel
else:
df_concat = pd.concat([df_concat, df_sel], axis=1)
# print('#' * 30)
print(df_concat)
num += 1
# 这里假设把最终生成的表格保存在放excel的那个文件夹下面新建的一个output文件夹里, 并把excel表格命名为result.xlsx
df_concat.to_excel('D:/文件夹/output/result.xlsx', index=False)
你把这段代码中的路径改为自己实际中用的路径就可以了。
这个简单,先把所有excel表名获取。
dir_list = os.listdir("你的目录")
这样遍历的全部excel文件名称就有了。
使用 pandas 库的 concat() 函数来实现从多个表中提取数据并拼接到一个 DataFrame 中。
首先需要使用 pandas 库的 read_csv() 函数或 read_excel() 函数读取这些表格文件,然后使用 concat() 函数拼接它们。
import pandas as pd
# 读取表格文件1
df1 = pd.read_csv('table1.csv')
# 读取表格文件2
df2 = pd.read_excel('table2.xlsx')
# 提取每个表的前两列数据
df1 = df1.iloc[:, :2]
df2 = df2.iloc[:, :2]
# 拼接两个表格
df = pd.concat([df1, df2])
# 查看拼接后的表格
print(df)
上面的代码首先读取了两个表格文件,然后提取每个表的前两列数据,最后使用 concat() 函数将两个表格拼接在一起。
注意,在使用 concat() 函数时,需要将多个表格放在一个列表中作为参数传入,例如 pd.concat([df1, df2])。如果想要改变拼接的方向,可以使用 axis 参数来指定拼接的方向,例如 pd.concat([df1, df2], axis=1)。
希望上面的信息能帮助实现从多个表中提取数据并拼接到一个 DataFrame 中。