将API输出转换为数据帧的最简单方法是什么

2024-09-29 19:30:23 发布

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

AcledData=pd.read_csv(“https://api.acleddata.com/acled/read?terms=accept&country=Afghanistan&date=20200315.csv”,sep=”,“,quotechar=”,encoding='utf-8')

打印(AcledData)

空数据帧 列:[{“状态”:200,成功:真,上次更新:117,计数:500,数据:[{“数据”id:“6996791”,iso:“4”,事件id:“AFG44631”,事件id:“44631”,事件日期:“2020-03-21”,年份:“2020”,时间精度:“1”,事件类型:“战斗”,子事件类型:“武装冲突”,行动1:“塔利班”,行动1:“国际行动1:“2”,行动2:“阿富汗军事力量(2014-),助理演员2:,国际2:,互动:“12”,地区:“高加索和中亚”,国家:“阿富汗”,行政官1:“巴尔克”,行政官2:“达拉特阿巴德”,行政官3:,地点:“达拉特阿巴德”,纬度:“36.9882”,经度:“66.8207”,地理精度:“2”,来源:“新华社;哈马出版社”,来源比例尺:“国家国际”注:“2020年3月21日,阿富汗部队在巴尔赫Dawlat Abad区击退了他们的袭击,12名塔利班武装分子包括2名指挥官被打死,5名包括一名指挥官受伤。”,死亡人数:“12人”,时间戳:“1584984341”,iso3:“AFG”},{“数据id:“6997066”,iso:“4.1,事件id:“AFG44667”,事件id:“44667”,事件日期:“2020-03-21”。1,年份:“2020”。1,时间精度:“1”。1,事件类型:“对平民的暴力行为”,次事件类型:“攻击”,参与者1:“不明身份武装团体(阿富汗)”,助理参与者1::.1,inter1:“3”,参与者2:“平民(阿富汗)”,助理参与者2:“穆斯林团体(阿富汗);教师(阿富汗)”,inter2:“7”,互动:“37”,地区:“高加索和中亚”。1,国家:“阿富汗”。1,行政官1:“喀布尔”,行政官2:“喀布尔”,行政官3::。1,地点:“喀布尔”,纬度:“34.5167”,经度:“69.1833”,地理精度:“1”,来源:“Pajhwok阿富汗新闻”,来源:“国家”,注:“2020年3月21日,一名宗教学者和教师在喀布尔市被不明身份的枪手杀害。”死亡人数:“1”,时间戳:“158498441”。1,iso3:“AFG”}.1,{“数据id:“6997171”,iso:“4”。2,事件id:“AFG44715”,事件id:“44715”,事件日期:“2020-03-21”。2,年份:“2020”。2,时间精度:“2”,事件类型:“战斗”。1,子事件类型:“武装冲突”。1,行动1:“塔利班”。1,行动1,行动协导员1。2,中间:“2”。1:“阿富汗军事力量(2014-”.1,助理演员2:”.1,inter2:“1”。1,互动:“12”。1,地区:“高加索和中亚”。2,国家:“阿富汗”。2,行政1:“巴尔赫”。1,行政2:“纳哈里·沙希”,行政3:”.2,地点:“纳哈里·沙希”,纬度:“36.8544”,经度:“67.1800”,地理精度:“2”。1,来源:“圣战之声”,来源:“其他”“,注释:“据2020年3月21日的报告,塔利班武装分子在巴尔赫Nahri Shahi区的一个检查站发动袭击,造成3名阿富汗安全人员死亡,5人受伤。死亡人数编码为0(VoJ报告了3人死亡)。”,死亡人数:“0”,…] 索引:[]


Tags: 数据id类型时间来源事件精度iso
2条回答

查询返回一个Json字符串,但相关数据嵌套在该Json中。你必须:

  • 将返回的字符串作为json对象读取
  • 使用该对象的相关部分提供数据帧

例如,使用urllib.request,您可以执行以下操作:

data = json.load(urllib.request.urlopen('https://api.acleddata.com/acled/read?terms=accept&country=Afghanistan&date=20200315.csv'))['data']
df = pd.DataFrame(data)

如果要将其转换为csv文件,无需使用熊猫,但应使用csv模块:

data = json.load(urllib.request.urlopen('https://api.acleddata.com/acled/read?terms=accept&country=Afghanistan&date=20200315.csv'))['data']
with open('file.csv', 'w', newline=''):
    wr = csv.DictWriter(fd, fieldnames=data[0].keys())
    _ = wr.writeheader()
    for d in data:
        _ = wr.writerow(d)

这不是csv,这是JSON

import pandas as pd

api = "https://api.acleddata.com/acled/read?terms=accept&country=Afghanistan&date=20200315.csv"

AcledData = pd.read_json(api)

数据字段也是JSON,但您可以使用类似的技术/数据帧方法来获得所需的内容

相关问题 更多 >

    热门问题