【问题标题】:Python & Arrays : Search and Add Missing Element in ArrayPython 和数组:在数组中搜索和添加缺失元素
【发布时间】:2019-09-03 03:33:46
【问题描述】:

我有一个凌乱的数组;每个元素都有子元素,每个子元素都有子子元素。我的数组是;

myComplex=[[['03.04.2019', 'Jack', '7']], [['26.03.2019', 'Micheal', '5'], ['26.03.2019', 'Smith', '8']], [['01.04.2019', 'Jack', '11'], ['01.04.2019', 'Michelle', '2'], ['01.04.2019', 'George', '9']]]

让我解释一下这个数组;

以'03.04.2019'开头的子元素; ['03.04.2019', 'Jack', '7']

以“26.03.2019”开头的子元素; ['26.03.2019', 'Micheal', '8'],['26.03.2019', 'Smith', '5']

以 '01.04.2019' 开头的子元素; ['01.04.2019', 'Jack', '11']、['01.04.2019', 'Michelle', '2']、['01.04.2019', 'George', '9']

在上面的myComplex 中,如您所见,每个子元素的第一个子子元素都是一个日期。我想在 01.04.2019 和 05.04.2019 之间添加缺失的日期(对于这个列表,它们是 02.04.2019、04.04.2019、05.04.2019),并带有类似这种格式的子元素;

[['02.04.2019', 'George', '0']]
[['04.04.2019', 'George', '0']]
[['05.04.2019', 'George', '0']]

所以我想要输入print(myComplex)时的输出是这样的

[[['26.03.2019', 'Micheal', '5'], ['26.03.2019', 'Smith', '8']], [['01.04.2019', 'Jack', '11'], ['01.04.2019', 'Michelle', '2'], ['01.04.2019', 'George', '9']], [['03.04.2019', 'Jack', '7']], [['02.04.2019', 'George', '0']], [['04.04.2019', 'George', '0']], [['05.04.2019', 'George', '0']]]

我该怎么做?你能给我一个解决方案吗?

【问题讨论】:

    标签: python arrays python-3.x datetime append


    【解决方案1】:

    我建议不要使用列表,而是将数据输入到带有时间戳索引以及名称和值列的 pandas DataFrame 中,然后重新采样到所需的时间段,然后使用 ffill 完成。

    【讨论】:

      【解决方案2】:

      如果你的输出“​​必须”看起来像那样,那么我想你只需要手动重建它。但是,如果您愿意接受其他工作,您可能会发现作为字典更容易管理:

      {date: [[name,number],[name,number]], date2: [[name,number]]}
      

      虽然它对字典来说并不重要,但如果它必须保持一个列表数组,请考虑使用 yyyy.mm.dd 以便于排序。

      【讨论】:

        【解决方案3】:

        就像 Iain D 所说的,你可以拥有一本字典

        my_little_bit_complex_dict = {
            '03.04.2019' : [
                            {'name': 'Jack', 'number': 7}
                            ],
            '26.03.2019' : [
                            {'name': 'Michael', 'number': 7},
                            {'name': 'Smith', 'number': 8}
                            ]
        }   
        

        但老实说,如果数据量很大,您可能需要考虑使用数据库

        CREATE TABLE mytable (
            somedate DATE,
            name VARCHAR(255),
            numberthingy INTEGER
        )
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-02-15
          • 1970-01-01
          • 2023-03-17
          • 1970-01-01
          • 1970-01-01
          • 2022-01-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多