【问题标题】:convert list of lists in dataframe转换数据框中的列表列表
【发布时间】:2023-01-04 00:47:06
【问题描述】:

我有以下数据

0      [[-0.932, 2.443, -1....
1      [[-1.099, 2.140, -1.4...
2      [[-0.985, -1.654, -1....
3      [[-1.339, 2.070, -0....
4      [[-1.119, 2.788, -2....
                             ...                        
494    [[-0.023, 2.688, -1...
495    [[1.897, 0.0, -2.249,...
496    [[1.538, 2.349, -0.6...
497    [[-0.141, 2.320, -0...
498    [[-0.483, 1.587, -1....
Length: 499, dtype: object

每行大约有 80 个列表,由 (list of lists) 组成,我想将它们变成列并获取数据:

          ID  col1      col2   ...   col80
1.1.2020  0   -0.932    ...
2.1.2020  0   2.443     ...
3.1.2020  0   -1        ...       
1.1.2020  1   -1.099
2.1.2020  1   2.140
3.1.2020  1   -1.4      ...

其中列 ID 来自列表指示器 (0,1,..,498)。索引列(1.1.2020 2.1.2020..)另存为对象(date)。这可能吗?如何实现?

【问题讨论】:

    标签: python pandas dataframe nested-lists


    【解决方案1】:

    可能的。如果那是您正在寻找的答案。 :)

    【讨论】:

      【解决方案2】:

      假设您有如下数据:

      import numpy as np
      import pandas as pd
      
      ser = pd.Series(np.arange(90).reshape(10, 3, 3).tolist())
      
      0             [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
      1     [[9, 10, 11], [12, 13, 14], [15, 16, 17]]
      2    [[18, 19, 20], [21, 22, 23], [24, 25, 26]]
      3    [[27, 28, 29], [30, 31, 32], [33, 34, 35]]
      4    [[36, 37, 38], [39, 40, 41], [42, 43, 44]]
      5    [[45, 46, 47], [48, 49, 50], [51, 52, 53]]
      6    [[54, 55, 56], [57, 58, 59], [60, 61, 62]]
      7    [[63, 64, 65], [66, 67, 68], [69, 70, 71]]
      8    [[72, 73, 74], [75, 76, 77], [78, 79, 80]]
      9    [[81, 82, 83], [84, 85, 86], [87, 88, 89]]
      dtype: object
      

      那么我认为你可以像这样完成大部分工作:

      out = ser.explode().apply(pd.Series).reset_index(names="ID")
      
          ID   0   1   2
      0    0   0   1   2
      1    0   3   4   5
      2    0   6   7   8
      3    1   9  10  11
      4    1  12  13  14
      5    1  15  16  17
      6    2  18  19  20
      7    2  21  22  23
      8    2  24  25  26
      9    3  27  28  29
      10   3  30  31  32
      11   3  33  34  35
      12   4  36  37  38
      13   4  39  40  41
      14   4  42  43  44
      15   5  45  46  47
      16   5  48  49  50
      17   5  51  52  53
      18   6  54  55  56
      19   6  57  58  59
      20   6  60  61  62
      21   7  63  64  65
      22   7  66  67  68
      23   7  69  70  71
      24   8  72  73  74
      25   8  75  76  77
      26   8  78  79  80
      27   9  81  82  83
      28   9  84  85  86
      29   9  87  88  89
      

      但是您需要自己重命名列并更改索引(您如何确定这些日期?)

      【讨论】:

        猜你喜欢
        • 2023-01-17
        • 2020-04-17
        • 2022-11-14
        • 2020-07-23
        相关资源
        最近更新 更多