提问人:Siavash 提问时间:11/29/2022 更新时间:11/29/2022 访问量:31
Python:如何将“嵌套数据帧”列表转换为扁平化的数据帧列表?
Python: How to convert a list of 'nested dataframes' into a flatten list of dataframes?
问:
我有一个这样的清单: 我的列表 =[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 的新手,所以,任何帮助将不胜感激。
答: 暂无答案
上一个:数据帧中的嵌套 JSON 提取
评论