如何在python中显示当前月份的前6个月数据

2024-04-25 12:14:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有3个月的数据,比如:

[
  {
    "Month": "Aug",
    "MonthNumber": "08",
    "NetAmount": 661.5
  },
  {
    "Month": "Oct",
    "MonthNumber": "10",
    "NetAmount": 245.1
  },
  {
    "Month": "Nov",
    "MonthNumber": "11",
    "NetAmount": 8877.4
  }
]

我想显示完整的6个月(当前+以前)的数据,如:

[
  {
    "Month": "Jun",
    "MonthNumber": "06",
    "NetAmount": 0
  },
  {
    "Month": "Jul",
    "MonthNumber": "07",
    "NetAmount": 0
  },
  {
    "Month": "Aug",
    "MonthNumber": "08",
    "NetAmount": 661.5
  },
  {
    "Month": "Sep",
    "MonthNumber": "09",
    "NetAmount": 0
  },
  {
    "Month": "Oct",
    "MonthNumber": "10",
    "NetAmount": 245.1
  },
  {
    "Month": "Nov",
    "MonthNumber": "11",
    "NetAmount": 8877.4
  }
]

如果任何月份的数据都不可用,则显示值为0的月份。请引导。你知道吗


Tags: 数据octnovjunsepaugjul月份
2条回答

您应该在变量中列出所有月份的简称:

months = "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
data = [
    {
        "Month": "Aug",
        "MonthNumber": "08",
        "NetAmount": 661.5
    },
    {
        "Month": "Oct",
        "MonthNumber": "10",
        "NetAmount": 245.1
    },
    {
        "Month": "Nov",
        "MonthNumber": "11",
        "NetAmount": 8877.4
    }
]

要添加错过的月份,可以使用下一个代码:

completed_data = []
for item in data:
    num = int(item["MonthNumber"])
    for i in range(len(completed_data), num - 1):
        completed_data.append({
            "Month": months[i],
            "MonthNumber": f"{i + 1:02}",
            "NetAmount": 0
        })
    completed_data.append(item)
for i in range(len(completed_data), 12):
    completed_data.append({
        "Month": months[i],
        "MonthNumber": f"{i + 1:02}",
        "NetAmount": 0
    })

要打印缩进的结果,可以使用json

import json
print(json.dumps(completed_data, indent=4))

我试过了,得到了要求的结果。你知道吗

import time
result = []

months = {
    '1':'Jan',
    '2':'Feb',
    '3':'Mar',
    '4':'Apr',
    '5':'May',
    '6':'Jun',
    '7':'Jul',
    '8':'Aug',
    '9':'Sep',
    '10':'Oct',
    '11':'Nov',
    '12':'Dec',
}

if len(filter_result) > 0:
    x = 6
    now = time.localtime()
    monthData = [time.localtime(time.mktime((now.tm_year, now.tm_mon - n, 1, 0, 0, 0, 0, 0, 0)))[:2] for n in range(x)]
    count = 0
    for i in range(len(monthData),0,-1):
        for data in filter_result:
            if monthData[i-1][1] == int(data.MonthNumber):
                data['NetAmount'] = formatDecimal(data['NetAmount'] / 1000)
                result.append(data)
                break
        if len(result) == count+1:
            count += 1
            continue
        else:
            salesData = {
                "Month" : months[str(monthData[i-1][1])],
                "MonthNumber" : "%02d" % (monthData[i-1][1],),
                "NetAmount" : 0
            }
            result.append(salesData)
            count += 1

return result

相关问题 更多 >