JSON到Python Datafram

2024-10-04 09:25:24 发布

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

我有一个天气API JSON数据。 我从一个网站上得到了一个转换后的python字典

markit_dict = json.loads(response.content)
markit_dict

然后我打开了一个数据帧

enter image description here

但是正如你所看到的,气象栏需要分开3个不同的栏目

当我选择每一列来旋转数据帧时,我可以

^{pr2}$

上次我试图放入for循环来生成dataframe,但我做不到

编辑:

openwet = pd.DataFrame(markit_dict)
openwet['weather'].values

输出:

array([ [{u'main': u'Clouds', u'id': 803, u'icon': u'04d', u'description': u'broken clouds'}],
       [{u'main': u'Clouds', u'id': 803, u'icon': u'04d', u'description': u'broken clouds'}],
       [{u'main': u'Clouds', u'id': 804, u'icon': u'04d', u'description': u'overcast clouds'}],
       [{u'main': u'Clouds', u'id': 804, u'icon': u'04d', u'description': u'overcast clouds'}],

我需要制作一个气象栏的数据帧。另外我把我的json数据也可能有人能找到不同的方法。在

url = "http://history.openweathermap.org//storage/debd7a72617dd61b0fc871a2c83fcabf.json"
response = requests.get(url)

response.content

Tags: 数据idjsonmainresponsedescriptioncontent气象
2条回答

我想您需要^{}来创建DataFrame,列weather首先是带有str[0]的选择列表,然后通过^{}转换为{},然后转换为DataFrame。(如果需要重命名列名,请将^{})最后一个^{}添加到原始:

import urllib.request, json

url = "http://history.openweathermap.org//storage/debd7a72617dd61b0fc871a2c83fcabf.json"
#http://stackoverflow.com/a/12965254/2901002
with urllib.request.urlopen(url) as url:
    data = json.loads(url.read().decode())

from pandas.io.json import json_normalize    
df = json_normalize(data)
df1 = pd.DataFrame(df['weather'].str[0].values.tolist()).add_prefix('weather.')
print (df1.head())
  weather.description weather.icon  weather.id weather.main
0       broken clouds          04d         803       Clouds
1       broken clouds          04d         803       Clouds
2     overcast clouds          04d         804       Clouds
3     overcast clouds          04d         804       Clouds
4     overcast clouds          04n         804       Clouds

df = pd.concat([df.drop('weather', 1), df1], axis=1)
^{pr2}$

如果你的问题我几乎理解了。:)

weatherArray = [ [{u'main': u'Clouds', u'id': 803, u'icon': u'04d', u'description': u'broken clouds'}],
       [{u'main': u'Clouds', u'id': 803, u'icon': u'04d', u'description': u'broken clouds'}],
       [{u'main': u'Clouds', u'id': 804, u'icon': u'04d', u'description': u'overcast clouds'}],
       [{u'main': u'Clouds', u'id': 804, u'icon': u'04d', u'description': u'overcast clouds'}] ]

for weather in weatherArray:
  for i in weather:
   print(i['main'])
   print(i['id'])
   print(i['icon'])
   print(i['description'])

  print('\n')

使用上面的代码循环遍历weatherArray的内容,并将它们添加到不同的列中。在

相关问题 更多 >