Я пытаюсь развернуть файл json, используя pandas, чтобы он был в определенном формате. Я хочу повернуть его на определенные столбцы

#python #json #pandas #dataframe

Вопрос:

Поэтому я попытался поискать в Интернете, чтобы найти способ конвертировать следующий json.

 { "eTask_ID": "100", "Organization": "Power", "BidID": "2.00", "Project": "IPP - C", "Forecast%": "67", "Sponsor": "Jon R", "IsActive": "1", "InternalOrder": "null", "Forecast": "null", "BidStatus": "null", "ProjectNotes": "null", "EstimateTypeCode": "null", "Start": "null", "SponsoringDistrict": "null", "LocationState": "null", "Finish": "null", "AreaManager": "null", "CTG Vendor": "null" }  

к тому, как показано ниже.

 { "eTask_ID": "100", "Organization": "Power", "BidID": "2.00", "Project": "IPP - C", "Attribute":"Forecast%", "AttrValue":"67", }, { "eTask_ID": "100", "Organization": "Power", "BidID": "2.00", "Project": "IPP - C", "Attribute":"Sponsor", "AttrValue":"Jon R", }, { "eTask_ID": "100", "Organization": "Power", "BidID": "2.00", "Project": "IPP - C", "Attribute":"IsActive", "AttrValue":"1", }, ...   

Теперь здесь, если вы видите, что все атрибуты, кроме первых четырех, преобразуются в атрибут и значение атрибута и получают свои собственные записи.

Я пытался найти решение в Интернете, но я все еще пытаюсь найти решение.

Пожалуйста, помогите, если кто-нибудь может.

Заранее спасибо.

Ответ №1:

Воспользуйся pd.melt :

 import json  with open('data.json') as json_data:  data = json.load(json_data)    out = pd.DataFrame.from_dict(data, orient='index').T   .melt(['eTask_ID', 'Organization', 'BidID', 'Project'],   var_name='Attribute', value_name='AttrValue')   .to_json(orient='records', indent=4)  

Выход:

 gt;gt;gt; print(out) [  {  "eTask_ID":100,  "Organization":"Power",  "BidID":2,  "Project":"IPP - C",  "Attribute":"Forecast%",  "AttrValue":67  },  {  "eTask_ID":100,  "Organization":"Power",  "BidID":2,  "Project":"IPP - C",  "Attribute":"Sponsor",  "AttrValue":"Jon R"  },  {  "eTask_ID":100,  "Organization":"Power",  "BidID":2,  "Project":"IPP - C",  "Attribute":"IsActive",  "AttrValue":1  },  {  "eTask_ID":100,  "Organization":"Power",  "BidID":2,  "Project":"IPP - C",  "Attribute":"InternalOrder",  "AttrValue":"null"  },  {  "eTask_ID":100,  "Organization":"Power",  "BidID":2,  "Project":"IPP - C",  "Attribute":"Forecast",  "AttrValue":"null"  },  {  "eTask_ID":100,  "Organization":"Power",  "BidID":2,  "Project":"IPP - C",  "Attribute":"BidStatus",  "AttrValue":"null"  },  {  "eTask_ID":100,  "Organization":"Power",  "BidID":2,  "Project":"IPP - C",  "Attribute":"ProjectNotes",  "AttrValue":"null"  },  {  "eTask_ID":100,  "Organization":"Power",  "BidID":2,  "Project":"IPP - C",  "Attribute":"EstimateTypeCode",  "AttrValue":"null"  },  {  "eTask_ID":100,  "Organization":"Power",  "BidID":2,  "Project":"IPP - C",  "Attribute":"Start",  "AttrValue":"null"  },  {  "eTask_ID":100,  "Organization":"Power",  "BidID":2,  "Project":"IPP - C",  "Attribute":"SponsoringDistrict",  "AttrValue":"null"  },  {  "eTask_ID":100,  "Organization":"Power",  "BidID":2,  "Project":"IPP - C",  "Attribute":"LocationState",  "AttrValue":"null"  },  {  "eTask_ID":100,  "Organization":"Power",  "BidID":2,  "Project":"IPP - C",  "Attribute":"Finish",  "AttrValue":"null"  },  {  "eTask_ID":100,  "Organization":"Power",  "BidID":2,  "Project":"IPP - C",  "Attribute":"AreaManager",  "AttrValue":"null"  },  {  "eTask_ID":100,  "Organization":"Power",  "BidID":2,  "Project":"IPP - C",  "Attribute":"CTG Vendor",  "AttrValue":"null"  } ]  

Комментарии:

1. Большое вам спасибо, Корралиен, это сработало отлично.