![](/img/trans.png)
[英]Transforming a list of tuples into pandas dataframe with the second item as column header and first item as value
[英]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.