【问题标题】:How can I add time series data into a range of time series list?如何将时间序列数据添加到一系列时间序列列表中?
【发布时间】:2019-11-16 06:29:23
【问题描述】:

我有几个包含特定时间序列数据的电子表格。我想将这些特定时间汇总到一个包含时间范围的汇总表中。

例如:我们有我们的摘要日期范围

  • [Dec 21, Dec 22, Dec 23](午夜到午夜)。

数据会是这样的:

  1. Dec 21 10:00 = 15
  2. Dec 21 11:00 = 10
  3. Dec 22 13:00 = 5
  4. Dec 22 16:00 = 10
  5. Dec 23 2:00 = 6
  6. Dec 23 12:00 = 6

因此,我希望摘要最终为:Dec 21 = 25Dec 22 = 15Dec 23 = 12

我正在使用 python、datetime 和 openpyxl 模块来访问和创建时间值。

我很难理解时间序列列表的创建。以及实际添加。

从各个工作表中获取实际的日期时间和值很容易。

for sheet in projectList:
    ws = wb[sheet]
    LOCSum = 0
    LOCList = {}
    for cols in range(8,30):
        LOCDate = ws.cell(row=4, column=cols).value #A datetime
        LOCSum = ws.cell(row=70, column=cols).value #A number
        LOCList = LocList + appendToListOfValues(LOCDate, LOCSum)
    fitListOfValuesIntoSummary(LOCList)

获得LOCDateLOCSum 后,如何将它们组合到一个列表中,然后再添加到摘要中? appendToListOfValues() 函数实际上并不存在。应该是字典吗?一个元组?

那么,一旦我有了一个时间序列列表,我如何使它适合摘要列表? fitListOfValuesIntoSummary() 函数也不存在。

最后一个踢球者,如果数据超出指定范围怎么办?我是否只是将它添加到摘要列表的“之前”和“之后”范围?

请指点我一些文学的方向。

(因为我一直在输入这个问题。)

是否会自动将找到的值添加到 Excel 文档中的摘要单元格中?

if LOCDate >= summaryDate+1:
    summaryDate = summaryDate+1
if summaryDate <= LOCDate <= summaryDate+1:
    ws[summary]['correctCol'+'correctRow'].value = ws[summary]['correctCol'+'correctRow'].value + LOCSum

【问题讨论】:

    标签: python excel indexing time-series addition


    【解决方案1】:

    这最终对我有用。

    for sheet in projectList:
        ws = wb[sheet]
        LOCDate = 0
        LOCSum = 0
        weeklyLOCAvailCol = 7
        for cols in range(8,30):
            LOCDate = ws.cell(row=19, column=cols).value #a datetime
            LOCSum = ws.cell(row=70, column=cols).value #a number
            if LOCDate >= wb[summName].cell(row=4, column=weeklyLOCAvailCol+1).value: #check if the current values date is greater than the next slot.
                weeklyLOCAvailCol += 1 #if so, move up one slot.
            wb[summary].cell(row=LOCAvailpos, column=weeklyLOCAvailCol).value = wb[summary].cell(row=LOCAvailpos, column=weeklyLOCAvailCol).value + LOCSum
    #then, add the current LOCSum value to whatever is in the current date range cell.
    

    所以最终发生的是每个汇总单元格都保存了每个工作表单元格的当前总数。

    只要H70-J70 小于下一个时间范围的第一个日期时间,每个工作表上的H70-J70 就会在H28 中求和。并且一旦发现K70大于I28的日期时间,则将下一组存入I28

    这并不理想,因为它需要一个 Excel 电子表格,但它会将数据放入一个范围内。如果有办法更快地做到这一点,我认为这会对其他人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 2020-03-03
      • 1970-01-01
      • 2018-06-04
      • 2023-01-05
      • 1970-01-01
      相关资源
      最近更新 更多