在Pandas中处理基于字典的数据值

2024-06-25 07:08:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我通过JSON将历史汇率列表拉入熊猫数据框架

date_index                                              rates   base
===================================================================
2019-01-02  {'CAD': 0.3294204895, 'HKD': 1.89202246, 'ISK'...   MYR
2019-01-03  {'CAD': 0.3273500638, 'HKD': 1.8903445342, 'IS...   MYR
2019-01-04  {'CAD': 0.3253937927, 'HKD': 1.8962552541, 'IS...   MYR
2019-01-07  {'CAD': 0.324265252, 'HKD': 1.9029602122, 'ISK...   MYR
2019-01-08  {'CAD': 0.3232099972, 'HKD': 1.9057445859, 'IS...   MYR

df['rates']中的值是字典形式的,我需要:

  1. 将其转换为多索引
  2. 将键和值转换为单独的列

我该怎么做呢

@Prune,我不习惯在堆栈上进行任何编辑,但下面是:

import requests
import json
import pandas as pd
from pandas.io.json import json_normalize
import numpy as np

if __name__ == '__main__':

    url = "https://api.exchangeratesapi.io/history?start_at=2019-01-01 end_at=2020-04-15&base=MYR"
    #url = "https://api.exchangeratesapi.io/latest?base=MYR"
    response = requests.get(url)
    json_data = json.loads(response.text)
    df = pd.DataFrame(json_data, columns=['rates', 'base', 'start_at', 'end_at'])
    df = df.reset_index()
    df['date_index'] = pd.to_datetime(df['index'])
    df.set_index('date_index', inplace=True)
    del df['index']

基本上,我想将“rates”中的键分开,并将它们转换为列

或者可能:

将“利率”作为多重指数


Tags: ioimportjsonurldfbasedateindex