簡體   English   中英

將復雜列表轉換為 dataframe 表,第一個值作為第二列 header

[英]Convert the complex list into a dataframe table with the first value as second column header

我正在嘗試將以下列表轉換為如下所示的表格。

列表:

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)

Output:

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...

我認為你可以做一個簡單的循環:

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

Output:

                 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

另一種解決方案:

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]]]]
index = [x[0] for x in val_list[0][1]]
val_dict = dict(val_list)
df = pd.DataFrame(val_dict, index=index)
for col in df.columns:
    df[col] = [elem[1] for elem in df[col]]
df
                 ALPHA01      BETA01     ALPHA02     BETA02
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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM