嗨,我从财务数据的熊猫数据框创建了一个字典。在应用了一些计算之后,我试图在循环中从此数据框中提取两个特定值,并将其添加到新的数据框中。为此,我需要从数据框(投资组合)创建一个新字典,并将其添加到列表中。为此,它已将索引号列为字典中每个条目内的额外键,即它已在字典内创建了一个字典。我要删除第二个字典键(在本例中为992),然后将该值添加到外部字典键中。
注释组合是一个更大的数据框,我从中提取了此特定条目
以下是较大投资组合数据框的头部:
portfolios.head()
Returns Volatility MMM Weight ABT Weight ... ADBE Weight AMD Weight AAP Weight AES Weight
0 0.376267 0.221238 0.181285 0.048288 ... 0.113503 0.164995 0.004576 0.040676
1 0.323802 0.193708 0.197259 0.001254 ... 0.162608 0.151378 0.059675 0.096442
2 0.398189 0.224429 0.067056 0.169859 ... 0.142113 0.184807 0.031413 0.027089
3 0.225460 0.172322 0.063022 0.100758 ... 0.075529 0.015270 0.134864 0.136784
4 0.325828 0.212882 0.148907 0.193622 ... 0.022118 0.096442 0.082162 0.004809
这是我的代码,用于获取并转换所需的特定条目:
list2 = []
GVCindex = portfolios[portfolios['Volatility']==portfolios['Volatility'].min()].index.tolist()
dictGVC = portfolios.loc[GVCindex].to_dict()
list2.append(dictGVC)
fin = pd.DataFrame.from_dict(list2)
这是当前的样子:
>>> list2
[{'Returns': {932: 0.14045532455897075}, 'Volatility': {932: 0.1582942016003597}, 'MMM Weight': {932: 0.18494322390344745}, 'ABT Weight': {932: 0.029906861753963284}, 'ABBV Weight': {932: 0.1837038795739978}, 'ABMD Weight': {932: 0.0062650919515888715}, 'ACN Weight': {932: 0.15793314037253936}, 'ATVI Weight': {932: 0.0644399756626248}, 'ADBE Weight': {932: 0.01200620828052462}, 'AMD Weight': {932: 0.024667578415588958}, 'AAP Weight': {932: 0.149085877589782}, 'AES Weight': {932: 0.18704816249594283}}]
这就是我想要的样子:
>>> list2
[{'Returns': 0.14045532455897075, 'Volatility': 0.1582942016003597, 'MMM Weight': 0.18494322390344745, 'ABT Weight': 0.029906861753963284}]
这是完成的数据框:
此数据框是从比上面的示例更大的列表2中创建的
>>> fin.head()
Returns Volatility MMM Weight ... AFL Weight A Weight APD Weight
0 {823: 0.4641212481398529} {823: 0.24708090579365835} {823: 0.03427725029749016} ... NaN NaN NaN
1 {788: 0.47643150225144204} {788: 0.2508983879170438} {788: 0.03386593631658274} ... {788: 0.046989535272586806} NaN NaN
2 {32: 0.45814683192368877} {32: 0.25089789807674673} {32: 0.07310079951400653} ... NaN {32: 0.01274115108933681} NaN
3 {216: 0.47680922654636615} {216: 0.2544050792473164} {216: 0.06114500772292474} ... NaN NaN {216: 0.058250849997334514}
4 {853: 0.45735781176585616} {853: 0.23667403702327827} {853: 0.027942223122145397} ... {853: 0.06445688077317947} NaN NaN
[5 rows x 15 columns]
答案 0 :(得分:0)
我的值以这种方式返回的原因是因为DataFrame.to_dict具有如下默认布局:
“字典”(默认):像{列-> {索引->值}}这样的字典
为解决这个问题,我将方向更改为记录,即设置为:
dictoptimal = Portfolios.loc [optimal1I] .to_dict(orient ='records')