Удалить ключ из словаря в словаре - PullRequest
0 голосов
/ 23 марта 2020

Привет, я создал словарь из pandas Dataframe финансовых данных. Я пытаюсь получить два указанных c значения из этого фрейма данных в al oop после применения некоторых вычислений и добавить его в новый фрейм данных. Чтобы сделать это в качестве промежуточного шага, я создал новый словарь из кадра данных (портфолио ios), который я добавлю в список. При этом он перечислил индексный номер как дополнительный ключ внутри каждой записи в словаре, ie он создал словарь внутри словаря. Я хочу отбросить этот второй ключ словаря, который в данном случае равен 992. И добавить это значение к внешнему словарному ключу.

note портфель ios - это более крупный Dataframe, из которого я извлек это speci c entry

ниже - заголовок большего портфеля ios dataframe:

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


Это мой код для захвата и преобразования указанной мне записи c:

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 голосов
/ 23 марта 2020

Причина, по которой мои значения возвращались таким образом, заключается в том, что DataFrame.to_dict имеет макет по умолчанию следующим образом:

'dict' (по умолчанию): dict like {column -> {index -> value}}

, чтобы решить эту проблему, я изменил ориентацию на записи, то есть установил:

dictoptimal = портфель ios .loc [optim1I] .to_dict (orient = 'records')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...