首页 > 解决方案 > 将具有月份名称的嵌套列表转换或格式化为python中的新列表

问题描述

我有一个这样的嵌套列表:

data = [[[], 'October'],
 [[], 'October'],
 [[], 'October'],
 [['covid-19'], 'October'],
 [['covid-19'], 'October'],
 [[], 'October'],
 [['covid-19'], 'October'],
 [[], 'October'],
 [['tiktok', 'tenaga kesehatan'], 'October'],
 [[], 'October'],
 [['covid-19'], 'October'],
 [['kanker'], 'October'],
 [['covid-19'], 'October'],
 [[], 'October'],
 [[], 'October'],
 [['covid-19'], 'October'],
 [[], 'October'],
 [['jantung'], 'October'],
 [['covid-19'], 'October'],
 [[], 'October'],
 [[], 'October'],
 [[], 'October'],
 [[], 'October'],
 [[], 'October'],
 [[], 'October'],
 [[], 'October'],
 [[], 'October'],
 [[], 'October'],
 [['covid-19'], 'October'],
 [['covid-19'], 'October'],
 [['covid-19'], 'October'],
 [[], 'October'],
 [[], 'October'],
 [[], 'October'],
 [[], 'October'],
 [['covid-19'], 'October'],
 [[], 'October'],
 [['jantung'], 'October'],
 [['covid-19'], 'October'],
 [['covid-19'], 'October'],
 [['covid-19'], 'October'],
 [['covid-19'], 'October'],
 [['covid-19'], 'October'],
 [['covid-19', 'covid-19'], 'October'],
 [['covid-19'], 'October'],
 [[], 'September'],
 [['covid-19'], 'September'],
 [['covid-19'], 'September'],
 [[], 'September'],
 [[], 'September'],
 [['covid-19', 'covid-19'], 'September'],
 [['jantung'], 'September'],
 [['jantung'], 'September'],
 [['covid-19'], 'September'],
 [['covid-19'], 'September'],
 [['covid-19'], 'September'],
 [[], 'September'],
 [['covid-19'], 'September'],
 [[], 'September'],
 [['covid-19'], 'September'],
 [[], 'September'],
 [['covid-19'], 'September'],
 [['covid-19'], 'September'],
 [[], 'September'],
 [['covid-19'], 'September'],
 [[], 'September'],
 [['covid-19'], 'September'],
 [['covid-19'], 'September'],
 [[], 'September'],
 [[], 'September'],
 [['covid-19'], 'September'],
 [[], 'September'],
 [[], 'August'],
 [[], 'August'],
 [[], 'August'],
 [['covid-19'], 'August'],
 [[], 'August'],
 [[], 'August'],
 [['covid-19'], 'August'],
 [['jantung'], 'August'],
 [['covid-19'], 'August'],
 [['covid-19'], 'August'],
 [[], 'August'],
 [['covid-19'], 'August'],
 [['covid-19'], 'August'],
 [['covid-19'], 'August'],
 [['covid-19'], 'August'],
 [[], 'August'],
 [['covid-19'], 'August'],
 [[], 'August'],
 [['covid-19'], 'August'],
 [['covid-19'], 'August'],
 [[], 'August'],
 [['covid-19'], 'August'],
 [['covid-19'], 'August'],
 [[], 'August'],
 [['covid-19'], 'August'],
 [['covid-19', 'covid-19'], 'August'],
 [['covid-19'], 'August'],
 [['covid-19'], 'July']]

我想按月份的名称计算所有令牌('covid-19'、'jantung'...等),这样我就可以按月获取令牌频率。

这是我的预期输出:

result = [
    ['covid-19',0,0,0,0,0,0,1,19,17,21,0,0],
    ['tiktok',0,0,0,0,0,0,0,0,0,1,0,0],
    ['jantung',0,0,0,0,0,0,0,1,2,2,0,0],
    ['kanker',0,0,0,0,0,0,0,0,0,1,0,0],
    ['tenaga kesehatan',0,0,0,0,0,0,0,0,0,1,0,0],   
]

请注意 :'0,0,0,0,0,0,1,19,17,21,0,0'从一月到十二月的订单以及该月的令牌总和。请建议我一种将嵌套转换为结果列表的方法。

有任何想法吗?

标签: pythonlistdataframenested

解决方案


你真的不应该在这样的列表中存储不同的数据,看起来像这样的东西怎么样?

{'covid-19': [0, 0, 0, 0, 0, 0, 0, 1, 17, 15, 19, 0],
 'jantung': [0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 0],
 'kanker': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0],
 'tenaga kesehatan': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0],
 'tiktok': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0]}

这是制作这个字典的代码片段:

from collections import defaultdict
result = defaultdict(lambda: [0]*12)
for i in data: 
    if i[0]: 
        for j in i[0]: 
            result[j][datetime.datetime.strptime(i[1],"%B").month - 1] += 1

推荐阅读