Фрейм данных Разделите и транспонируйте так, чтобы крайнее левое значение стало заголовком - PullRequest
0 голосов
/ 07 мая 2018

У меня есть столбец данных с парами данных, LHS - это имя столбца, RHS - это значение столбца:

display(df_Normal.head(1))

Data
0  {'MktUMidInit': 'a', 'ProdTemplateName': '', 'ForwardPriceDrop': '99.10', 'CoverPrice': '99.20 'CustParentCdr': '', ...}

Желаемый вывод:

Data
MktUMidInit ProdTemplateName ForwardPriceDrop CoverPrice CustParentCdr...
a                            99.10            99.20          

В каждой строке более пятидесяти пар данных

df.head(1).to_dict() 

{'Data': {0: {'Action': 'CustAcceptedQuote',
   'AllQ': '104.643',
   'AutoNegDealerMidValue': '0',
   'AutoNegDealerSpread': '0',
   'AutoNegDealerValue': '-1',
   'ClearingChannel': '',
   'ClearingCode': '',
   'ClearingHouse': '',
   'ClearingMember': '',
   'ClearingModel': '',
   'CneResultMessage': '',
   'Code': 'AU3TB0000036',
   'Commission': '', }}}

Я думал о том, чтобы сначала разбить запятую, а затем провести транспонирование. Команда split не работает с данными:

dfSplit = df_Normal['Data'].str.split(',', 1, expand=True)
display(dfSplit.head(1))

NaN

Что касается traspose, я смотрю на df.set_index, но это ошибка. а какие-нибудь предложения?

1 Ответ

0 голосов
/ 07 мая 2018

Похоже, у вас есть данные JSON, которые вы хотите нормализовать в DataFrame. Для этого есть функция:

from pandas.io.json import json_normalize    
json_normalize(df.Data.tolist())

В качестве альтернативы вы можете использовать pd.DataFrame.from_records:

pd.DataFrame.from_records(df.Data.tolist())

              Action     AllQ AutoNegDealerMidValue AutoNegDealerSpread  \
0  CustAcceptedQuote  104.643                     0                   0   

  AutoNegDealerValue ClearingChannel ClearingCode ClearingHouse  \
0                 -1                                              

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