如何阅读 Excel 练习册 (pandas)
How to read Excel Workbook (pandas)
首先我想说我不是专家。我精通但背负着日程安排和学习的负担 Python 就像我年轻时应该有的那样!
问题:
我有一本工作簿,有时会有不止一项工作sheet。在阅读工作簿时,我不会知道 sheet 的数量或他们的 sheet 名称。每个 sheet 上的数据排列都是相同的,有些列的名称为 'Unnamed'。问题是我尝试或在网上找到的所有内容都使用 pandas.ExcelFile 来收集所有 sheets 这很好,但我需要能够跳过 4 行并且之后只读取 42 行并解析特定列.尽管 sheet 可能具有完全相同的结构,但列名可能相同或不同,但希望将它们合并。
这就是我所拥有的:
import pandas as pd
from openpyxl import load_workbook
# Load in the file location and name
cause_effect_file = r'C:\Users\Owner\Desktop\C&E Template.xlsx'
# Set up the ability to write dataframe to the same workbook
book = load_workbook(cause_effect_file)
writer = pd.ExcelWriter(cause_effect_file)
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
# Get the file skip rows and parse columns needed
xl_file = pd.read_excel(cause_effect_file, skiprows=4, parse_cols = 'B:AJ', na_values=['NA'], convert_float=False)
# Loop through the sheets loading data in the dataframe
dfi = {sheet_name: xl_file.parse(sheet_name)
for sheet_name in xl_file.sheet_names}
# Remove columns labeled as un-named
for col in dfi:
if r'Unnamed' in col:
del dfi[col]
# Write dataframe to sheet so we can see what the data looks like
dfi.to_excel(writer, "PyDF", index=False)
# Save it back to the book
writer.save()
我正在处理的文件的 link 如下
Excel File
您可能想看看在 openpyxl 中使用 read_only
模式。这将允许您只加载您感兴趣的那些工作表,并且只查看您感兴趣的单元格。
如果您想使用 Pandas 数据框,那么您必须自己创建这些数据框,但这应该不会太难。
尝试根据您的具体需要修改以下内容:
import os
import pandas as pd
df = pd.DataFrame()
xls = pd.ExcelFile(path)
然后遍历所有可用数据 sheets:
for x in range(0, len(xls.sheet_names)):
a = xls.parse(x,header = 4, parse_cols = 'B:AJ')
a["Sheet Name"] = [xls.sheet_names[x]] * len(a)
df = df.append(a)
您可以为每个 sheet 调整要读取的 header 行和列。我添加了一列,该列将指示数据的名称 sheet 该行来自。
首先我想说我不是专家。我精通但背负着日程安排和学习的负担 Python 就像我年轻时应该有的那样!
问题:
我有一本工作簿,有时会有不止一项工作sheet。在阅读工作簿时,我不会知道 sheet 的数量或他们的 sheet 名称。每个 sheet 上的数据排列都是相同的,有些列的名称为 'Unnamed'。问题是我尝试或在网上找到的所有内容都使用 pandas.ExcelFile 来收集所有 sheets 这很好,但我需要能够跳过 4 行并且之后只读取 42 行并解析特定列.尽管 sheet 可能具有完全相同的结构,但列名可能相同或不同,但希望将它们合并。
这就是我所拥有的:
import pandas as pd
from openpyxl import load_workbook
# Load in the file location and name
cause_effect_file = r'C:\Users\Owner\Desktop\C&E Template.xlsx'
# Set up the ability to write dataframe to the same workbook
book = load_workbook(cause_effect_file)
writer = pd.ExcelWriter(cause_effect_file)
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
# Get the file skip rows and parse columns needed
xl_file = pd.read_excel(cause_effect_file, skiprows=4, parse_cols = 'B:AJ', na_values=['NA'], convert_float=False)
# Loop through the sheets loading data in the dataframe
dfi = {sheet_name: xl_file.parse(sheet_name)
for sheet_name in xl_file.sheet_names}
# Remove columns labeled as un-named
for col in dfi:
if r'Unnamed' in col:
del dfi[col]
# Write dataframe to sheet so we can see what the data looks like
dfi.to_excel(writer, "PyDF", index=False)
# Save it back to the book
writer.save()
我正在处理的文件的 link 如下 Excel File
您可能想看看在 openpyxl 中使用 read_only
模式。这将允许您只加载您感兴趣的那些工作表,并且只查看您感兴趣的单元格。
如果您想使用 Pandas 数据框,那么您必须自己创建这些数据框,但这应该不会太难。
尝试根据您的具体需要修改以下内容:
import os
import pandas as pd
df = pd.DataFrame()
xls = pd.ExcelFile(path)
然后遍历所有可用数据 sheets:
for x in range(0, len(xls.sheet_names)):
a = xls.parse(x,header = 4, parse_cols = 'B:AJ')
a["Sheet Name"] = [xls.sheet_names[x]] * len(a)
df = df.append(a)
您可以为每个 sheet 调整要读取的 header 行和列。我添加了一列,该列将指示数据的名称 sheet 该行来自。