我有一个包含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的帖子。我不确定如何处理这个问题,但如果有人可以帮我解决这个问题,那就太好了!任何形式的帮助表示赞赏:)
答案 0 :(得分: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 :(得分:1)
以下脚本使用的xlrd仅适用于扩展名为“.xls”的旧excel文件。对于'.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
答案 2 :(得分:1)
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。