将OpenCorporate API数据转换为结构化CSV

时间:2018-10-30 14:46:01

标签: python json pandas python-requests opencorporates

我目前正在努力弄清楚如何使用熊猫从OpenCorporate API抓取数据并将其插入CSV文件。我不太确定自己在哪里搞砸。

import pandas as pd
df = pd.read_json('https://api.opencorporates.com/companies/search?q=pwc')
data = df['companies']['company'][0]
result = {'name':data['timestamp'],
      'company_number':data[0]['company_number'],
      'jurisdiction_code':data[0]['jurisdiction_code'],
      'incorporation_date':data[0]['incorporation_date'],
      'dissolution_date':data[0]['dissolution_date'],
      'company_type':data[0]['company_type'],
      'registry_url':data[0]['registry_url'],
      'branch':data[0]['branch'],
      'opencorporates_url':data[0]['opencorporates_url'],
      'previous_names':data[0]['previous_names'],
      'source':data[0]['source'],
      'url':data[0]['url'],
      'registered_address':data[0]['registered_address'],
     }
df1 = pd.DataFrame(result, columns=['name', 'company_number', 'jurisdiction_code', 'incorporation_date', 'dissolution_date', 'company_type', 'registry_url', 'branch', 'opencorporates_url', 'previous_names', 'source', 'url', 'registered_address'])
df1.to_csv('company.csv', index=False, encoding='utf-8')

2 个答案:

答案 0 :(得分:1)

使用> MyFilter <- function(data, filtersVector) { filtersVector<- enquo(filtersVector) result <- data %>% filter(Species %in% !!filtersVector) result } > MyFilter(iris, c("setosa", "virginica")) Sepal.Length Sepal.Width Petal.Length Petal.Width Species 1 5.1 3.5 1.4 0.2 setosa 2 4.9 3.0 1.4 0.2 setosa 3 4.7 3.2 1.3 0.2 setosa 4 4.6 3.1 1.5 0.2 setosa 5 5.0 3.6 1.4 0.2 setosa 6 5.4 3.9 1.7 0.4 setosa 获取json数据,然后使用requests展平响应。

pd.io.json.json_normalize

然后按照问题所述,使用import requests json_data = requests.get('https://api.opencorporates.com/companies/search?q=pwc').json() from pandas.io.json import json_normalize df = None for row in json_data["results"]["companies"]: if df is None: df = json_normalize(row["company"]) else: df = pd.concat([df, json_normalize(row["company"])]) 方法将DataFrame写入csv

答案 1 :(得分:0)

批量访问OpenCorporates数据库可能会更容易。

OpenCorporates根据封闭许可为商业用户提供访问权限,并为能够通过类似共享的开放数据许可共享结果的记者,学者和NGO提供开放数据。许可证位于此处:https://opencorporates.com/info/licence