Python:如何将“嵌套数据帧”列表转换为扁平化的数据帧列表?

Python: How to convert a list of 'nested dataframes' into a flatten list of dataframes?

提问人:Siavash 提问时间:11/29/2022 更新时间:11/29/2022 访问量:31

问:

我有一个这样的清单: 我的列表 =[DF1,DF2,[DF3,DF4],DF5,[DF6,DF7,DF8],DF9] 在以下条件下: 1- 所有数据帧中的列都是相同的。 2- 数据帧中的行数不同。 3- 像 df1、df2、df5、df9 这样的单个数据帧具有相同的长度,等于 200 行。 4- 嵌套数据帧(如 [DF3,DF4] 的长度如下:len(df3)+ len(df4) = 200 行,其他整齐的 len(df6)+ len(df7)+ len(df9) = 200 5 - 我正在使用的真实列表有 19000 个元素,其中一些是嵌套的数据帧。 我想将这个嵌套列表转换为一个扁平列表,如下所示: new_list =[DF1,DF2,DF3,DF4,DF5,DF6,DF7,DF8,DF9]

我正在使用的真实列表的一小部分是这样的: ,,,

[[        user  trip_number  label                 time          ts       lat  \
  204490    10           77  train  2008-09-21 22:25:20  1222035920  0.683058   
  204491    10           77  train  2008-09-21 22:25:21  1222035921  0.683059   
  204492    10           77  train  2008-09-21 22:25:22  1222035922  0.683060   
  204493    10           77  train  2008-09-21 22:25:23  1222035923  0.683062   
  204494    10           77  train  2008-09-21 22:25:24  1222035924  0.683064   
  ...      ...          ...    ...                  ...         ...       ...   
  204685    10           77  train  2008-09-21 22:52:15  1222037535  0.695841   
  204686    10           77  train  2008-09-21 22:52:16  1222037536  0.695840   
  204687    10           77  train  2008-09-21 22:52:17  1222037537  0.695840   
  204688    10           77  train  2008-09-21 22:52:18  1222037538  0.695839   
  204689    10           77  train  2008-09-21 22:52:20  1222037540  0.695838   
  
               lon   Distance      Speed  Acceleration      jerk          BR  
  204490  2.045567   0.000000   0.000000      0.000000  0.000000   48.094861  
  204491  2.045565  13.516607  13.516607      1.219367  1.350581  197.809004  
  204492  2.045562  14.835314  14.835314      1.318707 -1.099210    8.043696  
  204493  2.045560  15.153079  15.153079      0.317765 -1.000942   21.368208  
  204494  2.045559  12.857010  12.857010     -2.296069 -2.613834    1.772198  
  ...          ...        ...        ...           ...       ...         ...  
  204685  2.031555  21.579990  21.579990      1.115610  0.874365    0.190515  
  204686  2.031551  21.091807  21.091807     -0.488183 -1.603793    0.522132  
  204687  2.031546  22.002424  22.002424      0.910617  1.398800    0.700489  
  204688  2.031542  21.714922  21.714922     -0.287502 -1.198119    0.474566  
  204689  2.031533  42.414807  21.207403     -0.253759  0.016871    0.206502  
  
  [200 rows x 12 columns]],
 [        user  trip_number label                 time          ts       lat  \
  204808    10           77   car  2008-09-21 23:01:53  1222038113  0.695751   
  204809    10           77   car  2008-09-21 23:01:54  1222038114  0.695750   
  204810    10           77   car  2008-09-21 23:01:55  1222038115  0.695749   
  204811    10           77   car  2008-09-21 23:01:56  1222038116  0.695748   
  204812    10           77   car  2008-09-21 23:01:57  1222038117  0.695747   
  ...      ...          ...   ...                  ...         ...       ...   
  204885    10           77   car  2008-09-21 23:03:18  1222038198  0.695765   
  204886    10           77   car  2008-09-21 23:03:20  1222038200  0.695767   
  204887    10           77   car  2008-09-21 23:03:21  1222038201  0.695768   
  204888    10           77   car  2008-09-21 23:03:22  1222038202  0.695768   
  204889    10           77   car  2008-09-21 23:03:23  1222038203  0.695769   
  
               lon    Distance     Speed  Acceleration      jerk          BR  
  204808  2.031023  574.347674  1.314297     -0.022207  0.001281   22.458310  
  204809  2.031022    5.219494  5.219494      3.905197  0.337053   16.546315  
  204810  2.031022    9.241368  9.241368      4.021874  0.116678   71.614573  
  204811  2.031023    6.235158  6.235158     -3.006210 -0.710112    2.411120  
  204812  2.031023    3.776058  3.776058     -2.459100  0.547110   14.576467  
  ...          ...         ...       ...           ...       ...         ...  
  204885  2.031003    6.121728  6.121728      1.335100  1.414734    0.092519  
  204886  2.031003   11.490264  5.745132     -0.188298 -0.761699    1.541826  
  204887  2.031003    3.997153  3.997153     -1.747979 -1.559681  354.466628  
  204888  2.031003    4.149031  4.149031      0.151878  1.899857   15.492049  
  204889  2.031003    3.224473  3.224473     -0.924558 -1.076436   12.461910  
  
  [82 rows x 12 columns],
          user  trip_number  label                 time          ts       lat  \
  204690    10           77  train  2008-09-21 22:52:21  1222037541  0.695837   
  204691    10           77  train  2008-09-21 22:52:22  1222037542  0.695837   
  204692    10           77  train  2008-09-21 22:52:23  1222037543  0.695836   
  204693    10           77  train  2008-09-21 22:52:24  1222037544  0.695835   
  204694    10           77  train  2008-09-21 22:52:25  1222037545  0.695835   
  ...      ...          ...    ...                  ...         ...       ...   
  204803    10           77  train  2008-09-21 22:54:32  1222037672  0.695787   
  204804    10           77  train  2008-09-21 22:54:33  1222037673  0.695786   
  204805    10           77  train  2008-09-21 22:54:34  1222037674  0.695784   
  204806    10           77  train  2008-09-21 22:54:35  1222037675  0.695783   
  204807    10           77  train  2008-09-21 22:54:36  1222037676  0.695782   
  
               lon   Distance      Speed  Acceleration      jerk        BR  
  204690  2.031529  19.958152  19.958152     -1.249251 -0.995492  3.484357  
  204691  2.031526  19.391810  19.391810     -0.566342  0.682909  2.736126  
  204692  2.031522  19.912412  19.912412      0.520603  1.086945  3.362944  
  204693  2.031518  19.647995  19.647995     -0.264418 -0.785020  1.156142  
  204694  2.031514  18.148658  18.148658     -1.499337 -1.234919  2.164872  
  ...          ...        ...        ...           ...       ...       ...  
  204803  2.031139  11.699852  11.699852      0.321350  0.131091  3.164936  
  204804  2.031138  11.760969  11.760969      0.061117 -0.260232  1.969409  
  204805  2.031136  11.958621  11.958621      0.197652  0.136534  0.243769  
  204806  2.031134  11.600718  11.600718     -0.357903 -0.555555  2.857247  
  204807  2.031133  11.018622  11.018622     -0.582096 -0.224192  1.857363  
  
  [118 rows x 12 columns]], ...]

len(mylist) = 2 ,,, 如您所见,此列表有 2 个元素:此示例的第一个元素的长度等于 200,第二个元素由两个长度为 82 和 118 的sub_elements组成,总长度为 82+118 = 200。所以,我想将这个包含 2 个元素的列表转换为一个包含 3 个元素的列表,一个有 200 行,一个有 82 行,一个有 118 行。 我试过这个: ,,,

import more_itertools
print(list(more_itertools.collapse(mylist)))

,,, 还有这个: ,,,

result = list()
for item in mylist:
    result += item.values.flatten().tolist()

,,, 第一个只给了我列名,第二个给出了这个错误:“'list' 对象没有属性'值'” 我已经阅读了很多答案,但它们无法帮助我解决问题。 我是 Python 的新手,所以,任何帮助将不胜感激。

Python 列表 数据帧 嵌套列表 扁平化

评论


答: 暂无答案