2015-07-21 62 views
1

我有一个包含2列的excel文件。左列中有一些标签按日期排序。对于每个日期,标签列表将与右侧的一些值一起出现。我需要阅读每个日期,找到一些特定的标签并相应地打印值。我已经发布了原始文件的摘录,以便您了解它的外观。Python - 读取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的文章。我不知道如何解决这个问题,但如果有人能帮助我解决这个问题,那会很棒!任何形式的帮助表示赞赏:)

+1

我在想'大熊猫'是这里的正确选择。 – timkofu

回答

1

下面的脚本应该让你开始。它使用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

1

下面的脚本使用xlrd将只工作在老Excel文件“的.xls'的扩展测试。对于'.xlsx'类型的excel文件,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 
1
C:>pip install 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和许多其他类型的后数据集文件我强烈推荐熊猫。

相关问题