【问题标题】:How to parse a <class, str> object?如何解析 <class, str> 对象?
【发布时间】:2021-06-15 18:44:24
【问题描述】:

我有一个将其打印到控制台的对象:

{
    "symbol": "GOOGL",
    "annualReports": [
        {
            "fiscalDateEnding": "2020-12-31",
            "reportedCurrency": "USD",
            "operatingCashflow": "65124000000",
            "paymentsForOperatingActivities": "2004000000",
            "proceedsFromOperatingActivities": "None",
            "changeInOperatingLiabilities": "6833000000",
            "changeInOperatingAssets": "7854000000",
            "depreciationDepletionAndAmortization": "13697000000",
            "capitalExpenditures": "22281000000",
            "changeInReceivables": "6524000000",
            "changeInInventory": "None",
            "profitLoss": "40269000000",
            "cashflowFromInvestment": "-32773000000",
            "cashflowFromFinancing": "-24408000000",
            "proceedsFromRepaymentsOfShortTermDebt": "None",
            "paymentsForRepurchaseOfCommonStock": "31149000000",
            "paymentsForRepurchaseOfEquity": "31149000000",
            "paymentsForRepurchaseOfPreferredStock": "None",
            "dividendPayout": "None",
            "dividendPayoutCommonStock": "None",
            "dividendPayoutPreferredStock": "None",
            "proceedsFromIssuanceOfCommonStock": "None",
            "proceedsFromIssuanceOfLongTermDebtAndCapitalSecuritiesNet": "None",
            "proceedsFromIssuanceOfPreferredStock": "None",
            "proceedsFromRepurchaseOfEquity": "-31149000000",
            "proceedsFromSaleOfTreasuryStock": "None",
            "changeInCashAndCashEquivalents": "7943000000",
            "changeInExchangeRate": "None",
            "netIncome": "40269000000"
        },
        {
            "fiscalDateEnding": "2019-12-31",
            "reportedCurrency": "USD",
            "operatingCashflow": "54520000000",
            "paymentsForOperatingActivities": "1661000000",
            "proceedsFromOperatingActivities": "None",
            "changeInOperatingLiabilities": "7635000000",
            "changeInOperatingAssets": "4961000000",
            "depreciationDepletionAndAmortization": "11781000000",
            "capitalExpenditures": "23548000000",
            "changeInReceivables": "4340000000",
            "changeInInventory": "None",
            "profitLoss": "34343000000",
            "cashflowFromInvestment": "-29491000000",
            "cashflowFromFinancing": "-23209000000",
            "proceedsFromRepaymentsOfShortTermDebt": "None",
            "paymentsForRepurchaseOfCommonStock": "18396000000",
            "paymentsForRepurchaseOfEquity": "18396000000",
            "paymentsForRepurchaseOfPreferredStock": "None",
            "dividendPayout": "None",
            "dividendPayoutCommonStock": "None",
            "dividendPayoutPreferredStock": "None",
            "proceedsFromIssuanceOfCommonStock": "None",
            "proceedsFromIssuanceOfLongTermDebtAndCapitalSecuritiesNet": "None",
            "proceedsFromIssuanceOfPreferredStock": "None",
            "proceedsFromRepurchaseOfEquity": "-18396000000",
            "proceedsFromSaleOfTreasuryStock": "None",
            "changeInCashAndCashEquivalents": "1820000000",
            "changeInExchangeRate": "None",
            "netIncome": "34343000000"
        },
        {
            "fiscalDateEnding": "2018-12-31",
            "reportedCurrency": "USD",
            "operatingCashflow": "47971000000",
            "paymentsForOperatingActivities": "69000000",
            "proceedsFromOperatingActivities": "None",
            "changeInOperatingLiabilities": "10052000000",
            "changeInOperatingAssets": "3376000000",
            "depreciationDepletionAndAmortization": "9035000000",
            "capitalExpenditures": "25139000000",
            "changeInReceivables": "2169000000",
            "changeInInventory": "None",
            "profitLoss": "30736000000",
            "cashflowFromInvestment": "-28504000000",
            "cashflowFromFinancing": "-13179000000",
            "proceedsFromRepaymentsOfShortTermDebt": "None",
            "paymentsForRepurchaseOfCommonStock": "9075000000",
            "paymentsForRepurchaseOfEquity": "9075000000",
            "paymentsForRepurchaseOfPreferredStock": "None",
            "dividendPayout": "None",
            "dividendPayoutCommonStock": "None",
            "dividendPayoutPreferredStock": "None",
            "proceedsFromIssuanceOfCommonStock": "None",
            "proceedsFromIssuanceOfLongTermDebtAndCapitalSecuritiesNet": "None",
            "proceedsFromIssuanceOfPreferredStock": "None",
            "proceedsFromRepurchaseOfEquity": "-9075000000",
            "proceedsFromSaleOfTreasuryStock": "None",
            "changeInCashAndCashEquivalents": "5986000000",
            "changeInExchangeRate": "-302000000",
            "netIncome": "30736000000"
        },
        {
            "fiscalDateEnding": "2017-12-31",
            "reportedCurrency": "USD",
            "operatingCashflow": "37091000000",
            "paymentsForOperatingActivities": "84000000",
            "proceedsFromOperatingActivities": "None",
            "changeInOperatingLiabilities": "6012000000",
            "changeInOperatingAssets": "5932000000",
            "depreciationDepletionAndAmortization": "6915000000",
            "capitalExpenditures": "13184000000",
            "changeInReceivables": "3768000000",
            "changeInInventory": "None",
            "profitLoss": "12506000000",
            "cashflowFromInvestment": "-31401000000",
            "cashflowFromFinancing": "-8298000000",
            "proceedsFromRepaymentsOfShortTermDebt": "None",
            "paymentsForRepurchaseOfCommonStock": "4846000000",
            "paymentsForRepurchaseOfEquity": "4846000000",
            "paymentsForRepurchaseOfPreferredStock": "None",
            "dividendPayout": "None",
            "dividendPayoutCommonStock": "None",
            "dividendPayoutPreferredStock": "None",
            "proceedsFromIssuanceOfCommonStock": "None",
            "proceedsFromIssuanceOfLongTermDebtAndCapitalSecuritiesNet": "None",
            "proceedsFromIssuanceOfPreferredStock": "None",
            "proceedsFromRepurchaseOfEquity": "-4846000000",
            "proceedsFromSaleOfTreasuryStock": "None",
            "changeInCashAndCashEquivalents": "-2203000000",
            "changeInExchangeRate": "405000000",
            "netIncome": "12662000000"
        },
        {
            "fiscalDateEnding": "2016-12-31",
            "reportedCurrency": "USD",
            "operatingCashflow": "36036000000",
            "paymentsForOperatingActivities": "84000000",
            "proceedsFromOperatingActivities": "None",
            "changeInOperatingLiabilities": "1848000000",
            "changeInOperatingAssets": "2578000000",
            "depreciationDepletionAndAmortization": "6144000000",
            "capitalExpenditures": "10212000000",
            "changeInReceivables": "2578000000",
            "changeInInventory": "None",
            "profitLoss": "19276000000",
            "cashflowFromInvestment": "-31165000000",
            "cashflowFromFinancing": "-8332000000",
            "proceedsFromRepaymentsOfShortTermDebt": "None",
            "paymentsForRepurchaseOfCommonStock": "3693000000",
            "paymentsForRepurchaseOfEquity": "3693000000",
            "paymentsForRepurchaseOfPreferredStock": "None",
            "dividendPayout": "None",
            "dividendPayoutCommonStock": "None",
            "dividendPayoutPreferredStock": "None",
            "proceedsFromIssuanceOfCommonStock": "None",
            "proceedsFromIssuanceOfLongTermDebtAndCapitalSecuritiesNet": "None",
            "proceedsFromIssuanceOfPreferredStock": "None",
            "proceedsFromRepurchaseOfEquity": "-3395000000",
            "proceedsFromSaleOfTreasuryStock": "None",
            "changeInCashAndCashEquivalents": "-3631000000",
            "changeInExchangeRate": "-170000000",
            "netIncome": "19478000000"
        }
    ],

我想知道如何获得每份年度报告的特定变量。例如,我需要从每个报告中制作一个只有“netIncome”的 Pandas 数据框。我将如何解析这样的对象并获取这些数据?

【问题讨论】:

  • 看起来符合json。
  • 如果你有这个字符串,它可能是一个 json 字符串。用json.loads() 加载它,然后你就有了一个普通的字典。你可以像loaded_data['annualReports']一样访问它。
  • 我猜这不是整个对象,因为它不会关闭初始大括号。我假设dict,但type(obj) 给了你什么?
  • @SvenEberth 关于如何使用 json.loads() 加载它的任何提示?它只是一个单行命令吗?它是否需要任何需要加载变量的参数?谢谢!
  • @BenY 打印类型(obj)产生

标签: python dataframe finance data-wrangling


【解决方案1】:

这看起来像一个dict,其中键symbol 表示哪个股票,然后键annualReports 包含list 的dict。

唯一类似于DataFrame 的就是annualReports 成员中包含的内容。

df = DataFrame(obj['annualReports'])

可能是你的第一步,那么你可以看看df['netIncome])`。

编辑:

标题与问题描述不匹配,所以我也会假设输入是一个字符串。在这种情况下,您需要先将 JSON 导入 Python 对象 (dict)。

from json import loads

obj = loads(source_string)

【讨论】:

  • 你错过了标题。这是一个字符串,而不是一个字典。
  • 标题中没有任何地方说“字符串”。这是第一行:“我有一个将它打印到控制台的对象:”我想知道这个对象是什么。我不确定 的表示法,所以我没有做出这样的假设。
  • object 是一个字符串。
  • 然后我的答案已经更新以解决歧义..
  • 如果它是一个字符串,为什么它被编辑成看起来像dict 本身?在这种情况下,我认为编辑和美化它可能会使潜在的回答者感到困惑。
猜你喜欢
  • 2019-11-30
  • 2018-05-30
  • 1970-01-01
  • 2021-08-14
  • 2012-09-28
  • 2017-09-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多