在字典中将键从字典中删除

时间:2020-03-23 01:53:19

标签: python-3.x pandas dictionary finance

嗨,我从财务数据的熊猫数据框创建了一个字典。在应用了一些计算之后,我试图在循环中从此数据框中提取两个特定值,并将其添加到新的数据框中。为此,我需要从数据框(投资组合)创建一个新字典,并将其添加到列表中。为此,它已将索引号列为字典中每个条目内的额外键,即它已在字典内创建了一个字典。我要删除第二个字典键(在本例中为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]

1 个答案:

答案 0 :(得分:0)

我的值以这种方式返回的原因是因为DataFrame.to_dict具有如下默认布局:

“字典”(默认):像{列-> {索引->值}}这样的字典

为解决这个问题,我将方向更改为记录,即设置为:

dictoptimal = Portfolios.loc [optimal1I] .to_dict(orient ='records')