下面的代碼在下面給出了一個錯誤,我將如何創建一個模塊化函式,將外部和內部字典值結合起來,并從中生成一個 pandas 資料框?
代碼:
import pandas as pd
import numpy as np
a = {'Long and Short PnL': np.array([ 0. , 0. , 0. , 0. ,1
0. , 0. , 0. , 0. ,2
0. , 0. , 0. , 0. ,3
0. , 0. , 0. , 0. ,4
0. , 0. , 0. , 0. ,5
0. , 0. , 0. , 0. ,6
-8.31004521, 0. , 0. , 315.29767864,7
-13.49807721, -28.64143208, -16.60131942, 0. ]),
'Long and Short Max Upside PnL': np.array([ 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. ,
0.85, 0. , 0. , 602.5 ,
25.7 , 0. , 96.45, 120.8]),
'Long and Short Compounded': {'Last Capitals': np.array([ 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. ,
91.86164693, 0. , 0. , 329.05735514,
401.83251206, 79.712739 , 75.76562339, 0. ]),
'Max Drawdown': np.array([ 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. ,
91.86164693, 0. , 0. , 96.15319621,
401.83251206, 79.712739 , 75.76562339, 0. ])}}
display(pd.DataFrame(a))
錯誤代碼:
ValueError: All arrays must be of the same length
預期輸出:

uj5u.com熱心網友回復:
您可以通過 3 個步驟獲得您想要的結果:
(i) 首先,'Long and Short PnL'鍵的值包括一些未出現在所需 DataFrame 中的整數 (1-7)。這些原因SyntaxError: invalid syntax。洗掉那些。
(ii) 用于pd.json_normalize將 json 資料標準化為平面表。這將創建一個包含 4 列串列的單行 DataFrame。
(iii) 用于explode展開所有列中的串列。以及rename來自嵌套字典的列名稱,用于洗掉出現在點之前的部分字符。
df = pd.json_normalize(a)
df = df.explode(df.columns.tolist()).rename(columns={col:col.split('.')[1] for col in df.columns if '.' in col}).reset_index(drop=True)
輸出:
Long and Short PnL Long and Short Max Upside PnL Last Capitals Max Drawdown
0 0.0 0.0 0.0 0.0
1 0.0 0.0 0.0 0.0
2 0.0 0.0 0.0 0.0
3 0.0 0.0 0.0 0.0
4 0.0 0.0 0.0 0.0
5 0.0 0.0 0.0 0.0
6 0.0 0.0 0.0 0.0
7 0.0 0.0 0.0 0.0
8 0.0 0.0 0.0 0.0
9 0.0 0.0 0.0 0.0
10 0.0 0.0 0.0 0.0
11 0.0 0.0 0.0 0.0
12 0.0 0.0 0.0 0.0
13 0.0 0.0 0.0 0.0
14 0.0 0.0 0.0 0.0
15 0.0 0.0 0.0 0.0
16 0.0 0.0 0.0 0.0
17 0.0 0.0 0.0 0.0
18 0.0 0.0 0.0 0.0
19 0.0 0.0 0.0 0.0
20 0.0 0.0 0.0 0.0
21 0.0 0.0 0.0 0.0
22 0.0 0.0 0.0 0.0
23 0.0 0.0 0.0 0.0
24 -8.310045 0.85 91.861647 91.861647
25 0.0 0.0 0.0 0.0
26 0.0 0.0 0.0 0.0
27 315.297679 602.5 329.057355 96.153196
28 -13.498077 25.7 401.832512 401.832512
29 -28.641432 0.0 79.712739 79.712739
30 -16.601319 96.45 75.765623 75.765623
31 0.0 120.8 0.0 0.0
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/408763.html
標籤:
下一篇:按折扣百分比對產品進行排序
