【问题标题】:Python: convert json loads to panda dataframePython:将json加载转换为熊猫数据框
【发布时间】:2020-03-08 12:40:29
【问题描述】:

我正在将 json 格式转换为 Pandas 数据框,但无法以表格格式返回。

HEADERS = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36",
           "Origin": "https://www2.sgx.com",
           "Referer": "https://www2.sgx.com/securities/securities-prices"}

# Start downloading stocks info from sgx
req = requests.get("https://api.sgx.com/securities/v1.1?excludetypes=bonds&params=nc,adjusted-vwap,b,bv,p,c,change_vs_pc,change_vs_pc_percentage,cx,cn,dp,dpc,du,ed,fn,h,iiv,iopv,lt,l,o,p_,pv,ptd,s,sv,trading_time,v_,v,vl,vwap,vwap-currency",
                   headers=HEADERS)
stocks = json.loads(req.text)
table = pd.DataFrame(stocks)

n 是公司

nc 是代码

是价格

【问题讨论】:

  • 请勿发布代码、数据、错误消息等的图片 - 将文本复制或输入到问题中。 How to Ask

标签: python pandas python-2.7


【解决方案1】:

好的,stocks['data']['prices'] 是一个字典列表,您只想在列名称 CodeCompanyPrice 中保留 ncnlt 字段。

要使用它构建一个 DataFrame,您可以这样做:

columns = ['nc', 'n', 'lt']

df = pd.DataFrame([{k: v for k,v in d.items() if k in columns}
               for d in stocks['data']['prices']], columns = columns)
df.rename(columns = {'n': 'Company', 'nc': 'Code', 'lt': 'Price'}, inplace = True)

您将获得一个 1042 行和 3 个预期列的数据框...除了 Company 列将仅包含 NaNvalue 因为原始 json 在 n 字段中没有数据。

【讨论】:

    【解决方案2】:

    我觉得你应该试试这个,数据在stocks['data']['prices']里面

    table = pd.DataFrame(stocks['data']['prices'])
    
    

    【讨论】:

      【解决方案3】:

      使用

      import pandas as pd
      df = pd.DataFrame.from_records(stocks)
      

      【讨论】:

        猜你喜欢
        • 2021-08-21
        • 2021-11-17
        • 2018-08-25
        • 2023-03-18
        • 1970-01-01
        • 1970-01-01
        • 2020-10-18
        • 2019-12-07
        相关资源
        最近更新 更多