Reputation: 75
I'm developing a Web API, I have a list from a query results like this:
[{'ORG': 'Asset Management',
'SURVEY_DATE': datetime.date(2018, 4, 23),
'NOS': '1'},
{'ORG': 'Asset Management',
'SURVEY_DATE': datetime.date(2018, 5, 8),
'NOS': '1'},
{'ORG': 'Chief Advocacy Office',
'SURVEY_DATE': datetime.date(2018, 10, 31),
'NOS': '50'},
{'ORG': 'Chief Advocacy Office',
'SURVEY_DATE': datetime.date(2019, 2, 13),
'NOS': '1'},
{'ORG': 'Chief Information Office',
'SURVEY_DATE': datetime.date(2018, 1, 22),
'NOS': '1'},
{'ORG': 'Chief Information Office',
'SURVEY_DATE': datetime.date(2018, 2, 2),
'NOS': '1'}]
I tried to convert it first into a dataframe and code it like this:
df1 = df1.groupby('ORG').apply(lambda x: dict(zip(x['SURVEY_DATE'],x['NOS']))).to_dict()
but is there a way that I dont need to convert it in dataframe?
And I want to format it into a dictionary like the one below for my response data:
{
"Asset Management": [
{
"date": "2019-03-30",
"numberOfSurveys": 76
},
{
"date": "2019-03-31",
"numberOfSurveys": 83
}
],
"Chief Advocacy Office": [
{
"date": "2019-03-30",
"numberOfSurveys": 50
},
{
"date": "2019-03-31",
"numberOfSurveys": 40
}
],
"Chief Information Office": [
{
"date": "2019-03-30",
"numberOfSurveys": 50
},
{
"date": "2019-03-31",
"numberOfSurveys": 40
}
]
}
Upvotes: 1
Views: 49
Reputation: 21893
Use collections.defaultdict()
:
import collections
result = collections.defaultdict(list)
for row in original_data:
result[row['ORG']].append({
'date': row['SURVEY_DATE'],
'numberOfSurveys': row['NOS'],
})
Upvotes: 4