微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Pandas:Dataframe 只有一个条目

如何解决Pandas:Dataframe 只有一个条目

我目前正在比较来自不同来源的德国电晕数据。为此,我使用了 RKI API 并将以下内容作为 Pandas 数据框:

0 ObjectId [{'name': 'IdBundesland','type': 'esriFieldTy... True [{'attributes': {'IdBundesland': 5,'Bundeslan... ObjectId True

但是这个输出错误的,因为它只有一个条目并且条目看起来不像它应该的。有谁知道可能是什么原因?也许 pd.json_normalize(r_json) 但没有这个我会得到一个 ValueError。

我的代码链接代码中的 API):


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

link = 'https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/RKI_COVID19/FeatureServer/0/query?where=1%3D1&outFields=*&outSR=4326&f=json'
payload = {}
response = requests.request(
    method='get',url=link,params=payload,timeout=5
)

r_json = response.json()
r_json = pd.json_normalize(r_json)
# print(response.status_code)
# print(r_json)
df = pd.DataFrame.from_dict(r_json)
print(df)

解决方法

我认为您的请求查询过于复杂:

检查波纹管网站后,您似乎可以在 url 中使用“resultOffset”来遍历整个数据集。

enter link description here

import requests
import pandas as pd

exceeded_transfer_limit: bool = True
offset: int = 0
result_df = pd.DataFrame()

while exceeded_transfer_limit:

    base_url = f"https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/RKI_COVID19/" \
               f"FeatureServer/0/query?where=1%3D1&outFields=*&outSR=4326&resultOffset={offset}&f=json"
    web_response = requests.get(url=base_url)
    web_json = web_response.json()
    print(web_json)
    
    # print(type(web_json))
    print(web_json.keys())
    if 'exceededTransferLimit' in web_json.keys():
        exceeded_transfer_limit = web_json['exceededTransferLimit'] #seems like this never return False,key just get ommited if not exceeded
    else:
        exceeded_transfer_limit=False
    print(f"exceededTransferLimit: {exceeded_transfer_limit}")

    result_df = result_df.append(pd.DataFrame([dict_row['attributes'] for dict_row in web_json['features']]))

    offset += 5000

    if len(result_df) >= 500000:
        result_df.to_csv(f"covid_data_{offset}.csv",sep=',',index=False)
        result_df = pd.DataFrame()

if len(result_df) > 0:
    result_df.to_csv(f"covid_data_{offset}_final.csv",index=False)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?