python - 在python中对数据进行分组并从excel中进行比较
问题描述
我正在使用python从excel文件中选择某些值的项目。我正在使用 xlrd 库和 openpyxl 库来执行此操作。
我们应该使用的python程序的工作方式是:
- 对特定卡片中的所有数据点条目进行分组。这些在 E 列中标记。例如,第 26 行和第 28 行之间的所有条目都在卡片任务 A 中,因此它们应该组合在一起。在 E 列中没有“卡片任务”值的所有条目不应被视为任何条目。
接下来……</p>
从一行中查看列 N (lastExecTime) 的值,并将该时间与列 M 中的以下值进行比较
如果看到时间重叠(列 M 小于前一个 N 值),它将增加一个名为“count”的变量。Count 存储过程重叠的次数。
终于……</p>
- 至于输出,目标是创建一个单独的文本文件,显示哪些任务重叠,以及某个卡片任务中有多少任务重叠。
我遇到的问题是我无法配对卡片任务中的数据
这是excel数据的示例:
这是更多数据的图片(这可能会更有帮助) 单击此处查看
这是我编写的代码,它告诉我是否有多个程序正在进行:
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))
本质上,我的问题是我无法将一张卡片任务中的所有值相互比较。
块引用
解决方案
我会像你已经阅读过的数据一样,但将所有带有“卡片任务”的行存储在一个单独的列表中。一旦你有了一个只有卡片任务项目的列表,你就可以进行比较。
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
推荐阅读
- python-3.x - Python pip install tesseract-ocr 失败
- serial-communication - 如何使用带有声学调制解调器的串行端口发送图像?
- c# - Unity 中的 XML 对话树无法正确解析信息
- loops - 如何在保持 tkinter 页面打开的同时创建一个 while true 循环?
- php - Laravel Eloquent 收集配对项目
- javascript - ReactJS [生产问题] - TypeError: (void 0) is not a function
- java - Android Firebase 显示当前登录的用户详细信息
- scala - 改进逻辑以在给定的 string1 上查找循环旋转可以产生 string2
- java - DynamoDBLocal 测试中的错误:com.almworks.sqlite4java.SQLiteException:[-91] 无法加载库:java.lang.UnsatisfiedLinkError
- python - InvalidBSON 消耗游标并引发 StopIteration。如何跳过坏文档?