Python 如何从4层嵌套字典中调用最深的嵌套值?
我已经从雅虎金融公司(Yahoo Financials)为9家股票公司提取了一些现金流量表。它产生了一个4层嵌套字典-dict、list、dict、dict。理想的结果是在1个数据帧中提前显示dict的4层的值,并按年份显示所有代码 例如: 现在,每一层都是分开的,每一个标签都在它自己的层中,点击会在它们自己的层中给你带来4个日期,然后是最终的值,这使得很难在标签之间进行比较 我已经浏览了这里发布的过去的问题,但是大多数问题没有达到4层。此外,由于我的第二层是一个列表,我无法继续超过这一层 请在下面找到完整的代码,非常感谢您的建议 从Yahoo Financials进口Yahoo Financials 作为pd进口熊猫 电子商务=['CTRP'、'EBAY'、'GRUB'、'BABA'、'JD'、'EXPE'、'AMZN'、'BKNG'、'MPNGF'] 雅虎金融电子商务=雅虎金融电子商务 电子商务\u现金\u流量\u数据=雅虎\u金融\u电子商务。获取\u金融\u stmts'年度','现金' 对于电子商务中的k、v、现金流数据项: 对于k1,v中的v1项目: 对于v1.1中的k2、v2项目: 对于v2.1中的k3和v3项目: printv3 AttributeError:“列表”对象没有属性“项” def递归项目商业现金流量数据: 对于关键字,电子商务中的价值\现金\流量\数据项: 如果typevalue为dict: 屈服键、屈服值 递归_项值的收益率 其他: 屈服键、屈服值 对于键,递归项目商业现金流量数据中的值: 打印键、值 cashflow=pd.dataframelistedcommerce\u cash\u flow\u data.items仅显示“0”==cashflowStatementHistory,“1”==此处转储的每个值对情况没有帮助 cashflow=pd.concat[pd.DataFrameecommerce\u cash\u flow\u data,列=[key,value]表示键,递归项commerce\u cash\u flow\u data中的值,忽略索引=False 现金流类型错误:不可损坏的类型:“dict” 您的数据来自dict=pd.DataFrame。来自dictecommerce\u cash\u flow\u data,orient='index' 从dict打印您的_df_有助于按照股票行情进行安排,但希望通过现金流量表对象、资本支出、现金变动等和日期,提前提取每个股票行情中的值。 原始嵌套目录: 更新2020-05-01: 在许多指标上,包返回“无”似乎存在一些问题 {'cashflowStatementHistory':{'CTRP':无, “易趣”:无, “GRUB”:无, “爸爸”:没有, “JD”:无, “支出”:无, "AMZN":无,, “BKNG”:无, “MPNGF”:无} 原始答复: 获取数据 电子商务=['CTRP'、'EBAY'、'GRUB'、'BABA'、'JD'、'EXPE'、'AMZN'、'BKNG'、'MPNGF'] 雅虎金融电子商务=雅虎金融电子商务 电子商务\u现金\u流量\u数据=雅虎\u金融\u电子商务。获取\u金融\u stmts'年度','现金' 创建数据帧的dict: 迭代每个ticker以创建一个数据帧,并将它们全部存储在dict中 cashflowStatementHistory是唯一的一级键,因此请将数据设置为等于其值。 2级键是股票代码符号。让pandas将每一个数据解包到一个单独的数据框中比较容易,例如df_dict['AMZN']。 每个ticker键的值都是给定年份的dict列表。 该列表每年在此级别进行解压,例如rangelendata[tkr] pd.concat将每个股票代码的年度数据合并到一个数据框中。 数据=电子商务\现金\流量\数据['cashflowStatementHistory'] df_dict=dict 对于电子商务中的tkr: df_dict[tkr]=pd.concat[pd.DataFramedata[tkr][x]用于rangelendata[tkr]]中的x, sort=False,join='outer',axis=1 将df_dict与pd.concat相结合: 在这个级别,pd.concat将df_dict中的所有数据帧组合成一个数据帧。 df=pd.concatdf_dict,sort=True 打印头 堆叠日期和值: df_l=pd.DataFramedf.stack df_l.reset_indexinplace=True df_l.columns=['ticker','financials','date','value'] 打印头 以最终形式为轴心: df_w=df_l.pivot_tableindex=['date','financials',columns='ticker',values='value' 打印头 很乐意帮忙。密令是一种折磨我们所有人的邪恶。Python 如何从4层嵌套字典中调用最深的嵌套值?,python,python-3.x,list,dictionary,Python,Python 3.x,List,Dictionary,我已经从雅虎金融公司(Yahoo Financials)为9家股票公司提取了一些现金流量表。它产生了一个4层嵌套字典-dict、list、dict、dict。理想的结果是在1个数据帧中提前显示dict的4层的值,并按年份显示所有代码 例如: 现在,每一层都是分开的,每一个标签都在它自己的层中,点击会在它们自己的层中给你带来4个日期,然后是最终的值,这使得很难在标签之间进行比较 我已经浏览了这里发布的过去的问题,但是大多数问题没有达到4层。此外,由于我的第二层是一个列表,我无法继续超过这一层 请在
2018-12-31
AMZN BABA
capitalExpenditures -13427000000 -35482000000
changeinCash 10317000000 -4232000000
changetoAccountReceivables -4615000000 8639000000
2017-12-31
AMZN BABA
capitalExpenditures -11955000000 -19628000000
changeinCash 1922000000 56335000000
changetoAccountReceivables -4780000000 5690000000
{'cashflowStatementHistory': {'AMZN': [{'2018-12-31': {'capitalExpenditures': -13427000000,
'changeInCash': 10317000000,
'changeToAccountReceivables': -4615000000,
'changeToInventory': -1314000000,
'changeToLiabilities': 4414000000,
'changeToNetincome': 6352000000,
'changeToOperatingActivities': 472000000,
'depreciation': 15341000000,
'effectOfExchangeRate': -351000000,
'investments': 1140000000,
'netBorrowings': -7686000000,
'netIncome': 10073000000,
'otherCashflowsFromInvestingActivities': 2104000000,
'totalCashFromFinancingActivities': -7686000000,
'totalCashFromOperatingActivities': 30723000000,
'totalCashflowsFromInvestingActivities': -12369000000}},
{'2017-12-31': {'capitalExpenditures': -11955000000,
'changeInCash': 1922000000,
'changeToAccountReceivables': -4780000000,
'changeToInventory': -3583000000,
'changeToLiabilities': 7838000000,
'changeToNetincome': 4096000000,
'changeToOperatingActivities': 283000000,
'depreciation': 11478000000,
'effectOfExchangeRate': 713000000,
'investments': -3054000000,
'netBorrowings': 9928000000,
'netIncome': 3033000000,
'otherCashflowsFromInvestingActivities': 1897000000,
'totalCashFromFinancingActivities': 9928000000,
'totalCashFromOperatingActivities': 18365000000,
'totalCashflowsFromInvestingActivities': -27084000000}},
{'2016-12-31': {'capitalExpenditures': -7804000000,
'changeInCash': 3759000000,
'changeToAccountReceivables': -3436000000,
'changeToInventory': -1426000000,
'changeToLiabilities': 6985000000,
'changeToNetincome': 2869000000,
'changeToOperatingActivities': 1724000000,
'depreciation': 8116000000,
'effectOfExchangeRate': -212000000,
'investments': -2663000000,
'netBorrowings': -3716000000,
'netIncome': 2371000000,
'otherCashflowsFromInvestingActivities': 1067000000,
'totalCashFromFinancingActivities': -3716000000,
'totalCashFromOperatingActivities': 17203000000,
'totalCashflowsFromInvestingActivities': -9516000000}},
{'2015-12-31': {'capitalExpenditures': -5387000000,
'changeInCash': 1333000000,
'changeToAccountReceivables': -1755000000,
'changeToInventory': -2187000000,
'changeToLiabilities': 5586000000,
'changeToNetincome': 2605000000,
'changeToOperatingActivities': 913000000,
'depreciation': 5646000000,
'effectOfExchangeRate': -374000000,
'investments': -1066000000,
'netBorrowings': -3882000000,
'netIncome': 596000000,
'otherCashflowsFromInvestingActivities': 798000000,
'totalCashFromFinancingActivities': -3882000000,
'totalCashFromOperatingActivities': 12039000000,
'totalCashflowsFromInvestingActivities': -6450000000}}],
'BABA': [{'2019-03-31': {'capitalExpenditures': -35482000000,
'changeInCash': -4232000000,
'changeToLiabilities': 8639000000,
'changeToNetincome': -6241000000,
'changeToOperatingActivities': 20551000000,
'depreciation': 36936000000,
'effectOfExchangeRate': 3245000000,
'investments': -65965000000,
'issuanceOfStock': 354000000,
'netBorrowings': -4231000000,
'netIncome': 87886000000,
'otherCashflowsFromFinancingActivities': 7357000000,
'otherCashflowsFromInvestingActivities': -8000000,
'repurchaseOfStock': -10872000000,
'totalCashFromFinancingActivities': -7392000000,
'totalCashFromOperatingActivities': 150975000000,
'totalCashflowsFromInvestingActivities': -151060000000}},
{'2018-03-31': {'capitalExpenditures': -19628000000,
'changeInCash': 56335000000,
'changeToLiabilities': 5690000000,
'changeToNetincome': 16967000000,
'changeToOperatingActivities': 10425000000,
'depreciation': 21885000000,
'effectOfExchangeRate': -6065000000,
'investments': -52936000000,
'issuanceOfStock': 399000000,
'netBorrowings': 33625000000,
'netIncome': 64093000000,
'otherCashflowsFromFinancingActivities': -13665000000,
'otherCashflowsFromInvestingActivities': -450000000,
'repurchaseOfStock': -10872000000,
'totalCashFromFinancingActivities': 20359000000,
'totalCashFromOperatingActivities': 125805000000,
'totalCashflowsFromInvestingActivities': -83764000000}},
{'2017-03-31': {'capitalExpenditures': -11006000000,
'changeInCash': 38227000000,
'changeToLiabilities': 4611000000,
'changeToNetincome': 15100000000,
'changeToOperatingActivities': 478000000,
'depreciation': 14185000000,
'effectOfExchangeRate': 2038000000,
'investments': -28582000000,
'issuanceOfStock': 14694000000,
'netBorrowings': 29333000000,
'netIncome': 43675000000,
'otherCashflowsFromFinancingActivities': 2069000000,
'otherCashflowsFromInvestingActivities': -253000000,
'repurchaseOfStock': -13182000000,
'totalCashFromFinancingActivities': 32914000000,
'totalCashFromOperatingActivities': 82854000000,
'totalCashflowsFromInvestingActivities': -79579000000}},
{'2016-03-31': {'capitalExpenditures': -10845000000,
'changeInCash': -1375000000,
'changeToLiabilities': 2350000000,
'changeToNetincome': -28625000000,
'changeToOperatingActivities': 3366000000,
'depreciation': 6977000000,
'effectOfExchangeRate': 466000000,
'investments': -36162000000,
'issuanceOfStock': 693000000,
'netBorrowings': 2478000000,
'netIncome': 71460000000,
'otherCashflowsFromFinancingActivities': 778000000,
'otherCashflowsFromInvestingActivities': 781000000,
'repurchaseOfStock': -19795000000,
'totalCashFromFinancingActivities': -15846000000,
'totalCashFromOperatingActivities': 56836000000,
'totalCashflowsFromInvestingActivities': -42831000000}}]}}