首页 > 解决方案 > 将复杂列表转换为数据框表,第一个值作为第二列标题

问题描述

我正在尝试将以下列表转换为如下所示的表格。

列表:

val_list = [['ALPHA01', [[1573582200000, 96.96746826171875], [1573582260000, 97.45691935221355], [1573582320000, 97.4244893391927], [1573582380000, 97.32177734375], [1573582440000, None], [1573582500000, None]]], ['BETA01', [[1573582200000, 89.6187235514323], [1573582260000, 90.69141642252605], [1573582320000, 90.83389282226562], [1573582380000, 90.83180745442708], [1573582440000, 90.72371419270833], [1573582500000, None]]], ['ALPHA02', [[1573582200000, 96.67467244466145], [1573582260000, 97.1467997233073], [1573582320000, 97.23036702473958], [1573582380000, 97.26894124348958], [1573582440000, None], [1573582500000, None]]], ['BETA02', [[1573582200000, 90.92616780598958], [1573582260000, 91.39727783203125], [1573582320000, 91.28725179036458], [1573582380000, 91.39530436197917], [1573582440000, 91.26514689127605], [1573582500000, None]]]]

所需的表格格式

TimeStamp   ALPHA01 BETA01  ALPHA02 BETA02
1573582200000   96.96746826 89.61872355 96.67467244 90.92616781
1573582260000   97.45691935 90.69141642 97.14679972 91.39727783
1573582320000   97.42448934 90.83389282 97.23036702 91.28725179
1573582380000   97.32177734 90.83180745 97.26894124 91.39530436
1573582440000   None    90.72371419 None    91.26514689
1573582500000   None    None    None    None

我在获得上述表格格式方面没有取得多大成功。

这就是我所做的

df = pd.DataFrame(val_list, columns =['value1','Value2']) 
print(df)

输出:

value1                                             Value2
0  PRODLMS1  [[1573582200000, 96.96746826171875], [15735822...
1  PRODCAS1  [[1573582200000, 89.6187235514323], [157358226...
2  PRODLMS2  [[1573582200000, 96.67467244466145], [15735822...
3  PRODCAS2  [[1573582200000, 90.92616780598958], [15735822...

标签: pythonpython-3.xpandaslistdataframe

解决方案


我认为你可以做一个简单的循环:

pd.concat([pd.DataFrame(x[1])
             .set_index(0)
             .rename(columns={1:x[0]}) 
           for x in val_list],
          axis=1
         )

输出:

                 ALPHA01     BETA01    ALPHA02     BETA02
0                                                        
1573582200000  96.967468  89.618724  96.674672  90.926168
1573582260000  97.456919  90.691416  97.146800  91.397278
1573582320000  97.424489  90.833893  97.230367  91.287252
1573582380000  97.321777  90.831807  97.268941  91.395304
1573582440000        NaN  90.723714        NaN  91.265147
1573582500000        NaN        NaN        NaN        NaN

推荐阅读