Python - 读取 Excel 文件并将输出打印到另一个文件

Python - Read Excel file and print output to another file

我有一个包含 2 列的 excel 文件。左列中有一些标签是根据日期排序的。对于每个日期,右侧会出现一个标签列表和一些值。我需要阅读每个日期,找到一些特定的标签并相应地打印值。我已经发布了原始文件的摘录,让您了解它的外观。

Row Label 1    Row Label 2
7/21/2015      123
Label 1        10.5
Label 2        20.6
[.....]        15
Label 5        25.9
Label 6        30.5
[.....]        544
7/22/2015      456
Label 1        15.8
Label 2        52.8
[.....]        87
Label 5        99
Label 6        55
Goes on....

现在正如您在上面看到的,我需要先找到日期,然后只打印标签 1,2 和 6 以及它们在右列中的值。这些标签针对每个具有不同值的日期重复。 excel 有 1000 行此类文本,我需要打印每个日期,然后是这些标签及其各自的值。

输出应该是这样的。

7/21/2015
Label 1       10.5
Label 2       20.6
Label 6       30.5

我是 python 的新手,我看到了一些使用 XLRD 的帖子。我不确定如何解决这个问题,但如果有人能帮助我解决这个问题,那就太好了!感谢任何形式的帮助 :)

以下脚本应该可以帮助您入门。它使用 openpyxl 库读取 Excel 电子表格。

import openpyxl 

wb = openpyxl.Workbook()
wb = openpyxl.load_workbook(filename='input.xlsx')
ws = wb.active

for row in range(2, ws.get_highest_row() + 1):
    row_label_1 = ws['A%d' % row].value
    row_label_2 = ws['B%d' % row].value

    if row_label_1.find("/") != -1: # Simple test for date
        print row_label_1
    elif row_label_1 in ["Label 1","Label 2","Label 6"]:
        print "%-20s  %s" % (row_label_1, row_label_2)

使用 Python 2.7

测试

以下脚本使用 xlrd,它只适用于扩展名为“.xls”的旧 excel 文件。对于 excel 类型为“.xlsx”的文件,openpyxl 将起作用。

此外,下面的示例假定第一列中的所有数据都是数据类型 TEXT。否则可以修改以下内容以适用于单元格数据类型。

使用 python 2.7

测试
import xlrd


header_column = 0
value_column = 1
accepted_labels = ['Label 1', 'Label 2', 'Label 6']
output = {}
output_child = {}

with xlrd.open_workbook("C:\temp\book1.xls") as work_book:
    work_sheet = work_book.sheet_by_index(0)

    num_rows = work_sheet.nrows - 1
    current_row = 0
    # loop through rows
    while current_row < num_rows:
        if 'label' not in work_sheet.cell_value(current_row, header_column).lower():
            date_header_value = work_sheet.cell_value(current_row, header_column)
            current_row += 1

            while 'label' in work_sheet.cell_value(current_row, header_column).lower() and current_row < num_rows:
                if work_sheet.cell_value(current_row, header_column) in accepted_labels:
                    output_child[work_sheet.cell_value(current_row, header_column)] = work_sheet.cell_value(current_row, value_column)

                current_row += 1

            output[date_header_value] = output_child
            current_row -= 1

        current_row += 1
print output
C:>pip install pandas

像上面那样安装pandas(python数据分析库)后

import pandas as pd

df = pd.read_excel(filename, sheetname, skiprows=[0, 1], header=None, index_col=0)
df.index.name = '7/21/2015'
df.columns = ['Data']
writer = pd.ExcelWriter('result.xlsx', datetime_format='yyyy-mm-dd')
df.to_excel(writer)

如果你想处理 xls、csv 和许多其他类型的数据集文件,我强烈推荐 pandas。