gpt4 book ai didi

python - 如何读取范围 ('A5:B10' )并使用 openpyxl 将这些值放入数据框中

转载 作者:行者123 更新时间:2023-12-04 16:08:24 25 4
gpt4 key购买 nike

能够以类似于 excel 的方式定义范围,即“A5:B10”对我需要的内容很重要,因此将整个工作表读取到数据框并不是很有用。

所以我需要做的是将 Excel 工作表中多个范围的值读取到多个不同的数据框。

valuerange1 = ['a5:b10']
valuerange2 = ['z10:z20']
df = pd.DataFrame(values from valuerange)
df = pd.DataFrame(values from valuerange1)

df = pd.DataFrame(values from ['A5:B10'])

我已经搜索过,但要么我搜索的工作很糟糕,要么其他人都解决了这个问题,但我真的不能。

谢谢。

最佳答案

使用 openpyxl

既然您已经表明,您正在寻找一种非常用户友好的方式来指定范围(如 excel 语法),并且正如查理克拉克已经建议的那样,您可以使用 openpyxl。

以下实用程序函数采用工作簿和列/行范围并返回 pandas DataFrame:

from openpyxl import load_workbook
from openpyxl.utils import get_column_interval
import re

def load_workbook_range(range_string, ws):
col_start, col_end = re.findall("[A-Z]+", range_string)

data_rows = []
for row in ws[range_string]:
data_rows.append([cell.value for cell in row])

return pd.DataFrame(data_rows, columns=get_column_interval(col_start, col_end))

用法:

wb = load_workbook(filename='excel-sheet.xlsx', 
read_only=True)
ws = wb.active
load_workbook_range('B1:C2', ws)

输出:

   B  C
0 5 6
1 8 9

Pandas 专用解决方案

在 Excel 工作表中给出以下数据:

    A   B   C
0 1 2 3
1 4 5 6
2 7 8 9
3 10 11 12

您可以使用以下命令加载它:pd.read_excel('excel-sheet.xlsx')

如果您要限制正在读取的数据,pandas.read_excel方法提供了许多选项。使用 parse_colsskiprowsskip_footer 选择您要加载的特定子集:

pd.read_excel(
'excel-sheet.xlsx', # name of excel sheet
names=['B','C'], # new column header
skiprows=range(0,1), # list of rows you want to omit at the beginning
skip_footer=1, # number of rows you want to skip at the end
parse_cols='B:C' # columns to parse (note the excel-like syntax)
)

输出:

   B  C
0 5 6
1 8 9

一些注意事项:

read_excel 方法的 API 并不意味着支持更复杂的选择。如果您需要复杂的过滤器,将整个数据加载到 DataFrame 中并使用出色的切片和索引机制会更容易(也更简洁)provided by pandas .

关于python - 如何读取范围 ('A5:B10' )并使用 openpyxl 将这些值放入数据框中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43327975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com