将数据分组并在python中与excel进行比较

时间:2018-05-31 22:24:13

标签: python excel xlrd

我正在使用python从excel文件中选择某些值。我正在使用xlrd库和openpyxl库来执行此操作。

我们应该运行python程序的方式是:

  • 对特定卡片中的所有数据点条目进行分组。这些在E列中标记。例如,第26行和第28行之间的所有条目都在卡任务A中,因此它们应该组合在一起。 E列中没有“卡片任务”值的所有条目不应视为任何内容。

下一步...

  • 查看行中N列(lastExecTime)的值,并将该时间与M列中的以下值进行比较

  • 如果看到时间重叠(列M小于前一个N值),它将增加一个名为“count”的变量。 Count存储过程重叠的次数。

...最后

  • 对于输出,目标是创建一个单独的文本文件,显示哪些任务重叠,以及某个任务中有多少任务重叠。

我遇到的问题是我无法配对卡片任务中的数据

以下是Excel数据的示例:

The data (a picture of it)

这是更多数据的图片(这可能会更有帮助) Click here for it

以下是我编写的代码,告诉我是否有多个程序在进行:

from openpyxl import load_workbook
book = load_workbook('LearnerSummaryNoFormat.xlsx')
sheet = book['Sheet1']


for row in sheet.rows:
     if ((row[4].value[:9]) != 'Card Task'):
         print ("Is not a card task: " + str(row[1].value))

基本上我的问题是我无法将一个卡片任务中的所有值相互比较。

  

块引用

1 个答案:

答案 0 :(得分:0)

我会像你已经读过一次数据但是将所有行与'Card Task'存储在一个单独的列表中。一旦您有一个只有卡任务项的列表,您可以比较。

card_task_row_object_list = []
count = 0

for row in sheet.rows:
     if 'Card Task' in row[4]:
          card_task_row_object_list.append(row)

从这里你想比较时间值。如果两个不同的卡任务时间重叠,您需要检查什么?

(第12行:开始,第13行:结束)

def compare_times(card_task_row_object_list):
     for row in card_task_row_object_list:
          for comparison_row in card_task_row_object_list:
               if (comparison_row[12] <= row[13] && comparison_row[13] >= row[12])
                     # No overlap
               else
                     count+=1