Python Forum

Full Version: Nested Dictionary to excel
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
My dictionary will be similar to below. I want it to not have the terms in red and I want each row to be a quarter date as output and each title to be a column populated with the dictionary values. Any help of how to make this a table in excel? Thanks!!

example output:
Total change liabilities .................
2018-09-30 64000000 ................

{'cashflowStatementHistoryQuarterly': {'APA':
[{'2018-09-30': {'changeToLiabilities': 64000000, 'totalCashflowsFromInvestingActivities': -926000000, 'netBorrowings': -228000000, 'totalCashFromFinancingActivities': -459000000, 'changeToOperatingActivities': -48000000, 'netIncome': 81000000, 'changeInCash': -379000000, 'totalCashFromOperatingActivities': 1006000000, 'depreciation': 676000000, 'otherCashflowsFromInvestingActivities': -22000000, 'dividendsPaid': -96000000, 'changeToInventory': 2000000, 'changeToAccountReceivables': -12000000, 'otherCashflowsFromFinancingActivities': -135000000, 'changeToNetincome': 243000000, 'capitalExpenditures': -942000000}},

{'2018-06-30': {'changeToLiabilities': -20000000, 'totalCashflowsFromInvestingActivities': -1024000000, 'netBorrowings': -228000000, 'totalCashFromFinancingActivities': -194000000, 'changeToOperatingActivities': 213000000, 'netIncome': 195000000, 'changeInCash': -105000000, 'totalCashFromOperatingActivities': 1113000000, 'depreciation': 656000000, 'otherCashflowsFromInvestingActivities': -11000000, 'dividendsPaid': -96000000, 'changeToInventory': 24000000, 'changeToAccountReceivables': -36000000, 'otherCashflowsFromFinancingActivities': -98000000, 'changeToNetincome': 81000000, 'capitalExpenditures': -1017000000}},
{'2018-03-31': {'changeToLiabilities': 66000000, 'totalCashflowsFromInvestingActivities': -890000000, 'netBorrowings': -150000000, 'totalCashFromFinancingActivities': -316000000, 'changeToOperatingActivities': -152000000, 'netIncome': 145000000, 'changeInCash': -591000000, 'totalCashFromOperatingActivities': 615000000, 'depreciation': 596000000, 'otherCashflowsFromInvestingActivities': -22000000, 'dividendsPaid': -95000000, 'changeToInventory': -33000000, 'changeToAccountReceivables': -65000000, 'otherCashflowsFromFinancingActivities': -71000000, 'changeToNetincome': 58000000, 'capitalExpenditures': -877000000}},
{'2017-12-31': {'changeToLiabilities': 61000000, 'totalCashflowsFromInvestingActivities': -793000000, 'netBorrowings': -150000000, 'totalCashFromFinancingActivities': -149000000, 'changeToOperatingActivities': 32000000, 'netIncome': 456000000, 'changeInCash': -274000000, 'totalCashFromOperatingActivities': 668000000, 'depreciation': 632000000, 'otherCashflowsFromInvestingActivities': -45000000, 'dividendsPaid': -95000000, 'changeToInventory': 15000000, 'changeToAccountReceivables': -200000000, 'otherCashflowsFromFinancingActivities': -54000000, 'changeToNetincome': -328000000, 'capitalExpenditures': -763000000}}]}}
Have you already created the dictionary?
If not, it's much easier to handle if the embedded dictionaries are not in a list
Example:
import json
import os
import pandas as pd


class DictToExcel:
    os.chdir(os.path.abspath(os.path.dirname(__file__)))
    def __init__(self):
        self.exdict = {
            'cashflowStatementHistoryQuarterly': {
                'APA': {
                    '2018-09-30': {
                        'changeToLiabilities': 64000000, 
                        'totalCashflowsFromInvestingActivities': -926000000, 
                        'netBorrowings': -228000000, 
                        'totalCashFromFinancingActivities': -459000000, 
                        'changeToOperatingActivities': -48000000, 
                        'netIncome': 81000000, 
                        'changeInCash': -379000000, 
                        'totalCashFromOperatingActivities': 1006000000, 
                        'depreciation': 676000000, 
                        'otherCashflowsFromInvestingActivities': -22000000, 
                        'dividendsPaid': -96000000, 
                        'changeToInventory': 2000000, 
                        'changeToAccountReceivables': -12000000, 
                        'otherCashflowsFromFinancingActivities': -135000000, 
                        'changeToNetincome': 243000000, 
                        'capitalExpenditures': -942000000
                    },
                    '2018-06-30': {
                        'changeToLiabilities': -20000000, 
                        'totalCashflowsFromInvestingActivities': -1024000000, 
                        'netBorrowings': -228000000, 
                        'totalCashFromFinancingActivities': -194000000, 
                        'changeToOperatingActivities': 213000000, 
                        'netIncome': 195000000, 
                        'changeInCash': -105000000, 
                        'totalCashFromOperatingActivities': 1113000000, 
                        'depreciation': 656000000, 
                        'otherCashflowsFromInvestingActivities': -11000000, 
                        'dividendsPaid': -96000000, 
                        'changeToInventory': 24000000, 
                        'changeToAccountReceivables': -36000000, 
                        'otherCashflowsFromFinancingActivities': -98000000, 
                        'changeToNetincome': 81000000, 
                        'capitalExpenditures': -1017000000
                    },
                    '2018-03-31': {
                        'changeToLiabilities': 66000000,
                        'totalCashflowsFromInvestingActivities': -890000000,
                        'netBorrowings': -150000000,
                        'totalCashFromFinancingActivities': -316000000,
                        'changeToOperatingActivities': -152000000,
                        'netIncome': 145000000,
                        'changeInCash': -591000000,
                        'totalCashFromOperatingActivities': 615000000,
                        'depreciation': 596000000,
                        'otherCashflowsFromInvestingActivities': -22000000,
                        'dividendsPaid': -95000000,
                        'changeToInventory': -33000000,
                        'changeToAccountReceivables': -65000000,
                        'otherCashflowsFromFinancingActivities': -71000000,
                        'changeToNetincome': 58000000,
                        'capitalExpenditures': -877000000
                    },
                    '2017-12-31': {
                        'changeToLiabilities': 61000000,
                        'totalCashflowsFromInvestingActivities': -793000000,
                        'netBorrowings': -150000000,
                        'totalCashFromFinancingActivities': -149000000,
                        'changeToOperatingActivities': 32000000,
                        'netIncome': 456000000,
                        'changeInCash': -274000000,
                        'totalCashFromOperatingActivities': 668000000,
                        'depreciation': 632000000,
                        'otherCashflowsFromInvestingActivities': -45000000,
                        'dividendsPaid': -95000000,
                        'changeToInventory': 15000000,
                        'changeToAccountReceivables': -200000000,
                        'otherCashflowsFromFinancingActivities': -54000000,
                        'changeToNetincome': -328000000,
                        'capitalExpenditures': -763000000
                    }
                }
            }
        }
        self.display_dict(self.exdict)

    def display_dict(self, thedict):
        for key, value in thedict.items():
            if isinstance(value, dict):
                print(f'\n{key}:')
                self.display_dict(value)
            else:
                print(f'    {key}: {value}')


if __name__ == '__main__':
    DictToExcel()
the display_dict method shows how easy it is to traverse the dictionary if in this format
and produces the following results:
Output:
cashflowStatementHistoryQuarterly: APA: 2018-09-30: changeToLiabilities: 64000000 totalCashflowsFromInvestingActivities: -926000000 netBorrowings: -228000000 totalCashFromFinancingActivities: -459000000 changeToOperatingActivities: -48000000 netIncome: 81000000 changeInCash: -379000000 totalCashFromOperatingActivities: 1006000000 depreciation: 676000000 otherCashflowsFromInvestingActivities: -22000000 dividendsPaid: -96000000 changeToInventory: 2000000 changeToAccountReceivables: -12000000 otherCashflowsFromFinancingActivities: -135000000 changeToNetincome: 243000000 capitalExpenditures: -942000000 2018-06-30: changeToLiabilities: -20000000 totalCashflowsFromInvestingActivities: -1024000000 netBorrowings: -228000000 totalCashFromFinancingActivities: -194000000 changeToOperatingActivities: 213000000 netIncome: 195000000 changeInCash: -105000000 totalCashFromOperatingActivities: 1113000000 depreciation: 656000000 otherCashflowsFromInvestingActivities: -11000000 dividendsPaid: -96000000 changeToInventory: 24000000 changeToAccountReceivables: -36000000 otherCashflowsFromFinancingActivities: -98000000 changeToNetincome: 81000000 capitalExpenditures: -1017000000 2018-03-31: changeToLiabilities: 66000000 totalCashflowsFromInvestingActivities: -890000000 netBorrowings: -150000000 totalCashFromFinancingActivities: -316000000 changeToOperatingActivities: -152000000 netIncome: 145000000 changeInCash: -591000000 totalCashFromOperatingActivities: 615000000 depreciation: 596000000 otherCashflowsFromInvestingActivities: -22000000 dividendsPaid: -95000000 changeToInventory: -33000000 changeToAccountReceivables: -65000000 otherCashflowsFromFinancingActivities: -71000000 changeToNetincome: 58000000 capitalExpenditures: -877000000 2017-12-31: changeToLiabilities: 61000000 totalCashflowsFromInvestingActivities: -793000000 netBorrowings: -150000000 totalCashFromFinancingActivities: -149000000 changeToOperatingActivities: 32000000 netIncome: 456000000 changeInCash: -274000000 totalCashFromOperatingActivities: 668000000 depreciation: 632000000 otherCashflowsFromInvestingActivities: -45000000 dividendsPaid: -95000000 changeToInventory: 15000000 changeToAccountReceivables: -200000000 otherCashflowsFromFinancingActivities: -54000000 changeToNetincome: -328000000 capitalExpenditures: -763000000