当然了!很多时候一个Sheet表格里会有多个表格,可能是通过一些空行或者某些标识来区分的。为了方便你理解,我们先准备一些虚拟数据,并展示如何读取它们。
### 1. 准备工作
首先,确保你安装了 `pandas` 和 `openpyxl` 库:
pip install pandas openpyxl
### 2. 创建一个示例Excel文件
我们先创建一个包含多个表的Excel文件作为示例:
import pandas as pd
from openpyxl import Workbook
# 创建一个新的工作簿和工作表
wb = Workbook()
ws = wb.active
# 创建第一个表格
data1 = [
["Name", "Age"],
["Alice", 30],
["Bob", 25]
]
for row in data1:
ws.append(row)
# 添加空行以分隔两个表
ws.append([])
# 创建第二个表格
data2 = [
["Product", "Price"],
["Apple", 1.2],
["Banana", 0.5]
]
for row in data2:
ws.append(row)
# 保存文件
wb.save("test_multipletables.xlsx")
### 3. 读取单个Sheet中的多个表格
然后,我们编写代码读取该Excel文件中的多个表格。假设表格之间是通过一个或多个空行分隔:
import pandas as pd
# 读取整个Excel文件
df = pd.read_excel("test_multipletables.xlsx", sheet_name=0, header=None)
# 查找空行的索引,这里假设空行的定义是整行都是NaN
empty_indices = df[df.isnull().all(axis=1)].index
tables = []
start_idx = 0
# 遍历空行索引,切分表格
for end_idx in empty_indices:
if start_idx != end_idx: # 避免空表
table = df.iloc[start_idx:end_idx].reset_index(drop=True)
tables.append(table)
start_idx = end_idx + 1
# 添加最后一部分(如果存在)
if start_idx < len(df):
table = df.iloc[start_idx:].reset_index(drop=True)
tables.append(table)
# 打印结果
for i, table in enumerate(tables):
print(f"Table {i+1}:\n", table)
print("-" * 40)
### 运行以上代码
执行上述代码后,你应该能看到从单个Sheet中提取的两个表格:
Table 1:
0 1
0 Name Age
1 Alice 30
2 Bob 25
----------------------------------------
Table 2:
0 1
0 Product Price
1 Apple 1.2
2 Banana 0.5
----------------------------------------
这样就成功将一个Sheet中的多个表格读取出来了!希望这个例子对你有所帮助。如果有任何问题或进一步的需求,请随时告诉我!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |