如何将Open天气图json格式转换为pandas数据帧



我想将Open Weather Map Json格式转换为pandas数据帧。我在stackoverflow上读到了一些关于这个问题的问题,比如1和2,但没有人回答我的问题。我的Json格式如下所示:

{'coord': {'lon': 36.5707, 'lat': -113.7909}, 'weather': [{'id': 803, 'main': 'Clouds', 'description': 'broken clouds', 'icon': '04n'}], 'base': 'stations', 'main': {'temp': 272.49, 'feels_like': 272.49, 'temp_min': 272.49, 'temp_max': 272.49, 'pressure': 1025, 'humidity': 89, 'sea_level': 1025, 'grnd_level': 817}, 'visibility': 10000, 'wind': {'speed': 0.94, 'deg': 305, 'gust': 1.68}, 'clouds': {'all': 55}, 'dt': 1644685756, 'sys': {'country': 'US', 'sunrise': 1644636899, 'sunset': 1644675906}, 'timezone': 12600, 'id': 14256, 'name': 'xxx', 'cod': 200}

我知道我应该使用熊猫的json_normalize函数。但我不知道怎么用。

我试试这个:

import pandas as pd
import json
import requests
url = "http://api.openweathermap.org/data/2.5/weather?lat=36.7&lon=-113.5707&APPID="  

response = requests.get(url)
data = response.text
dicts = json.loads(data)
jsont = json.dumps(dicts)
df = pd.read_json(jsont, lines=True)
js =[]
js.append(json.loads(jsont))
print(js)
x =pd.json_normalize(js)
x.to_csv('E:/testjson.csv')

但我不工作。我想将json的所有键转换为列。

您可以使用pandas.json_normalize将JSON数据转换为平面表。

>>> import pandas as pd
>>> data = {'coord': {'lon': 36.5707, 'lat': -113.7909}}
>>> df = pd.json_normalize(data)
>>> df.columns
Index(['coord.lon', 'coord.lat'], dtype='object')

最新更新