Python TypeError: unhashable type: 'dict'

Python TypeError: unhashable type: 'dict'

我正在尝试使用 API 请求来收集天气数据,并最终将数据保存到 pandas.to_csv 的 CSV 文件中。 API 请求正在运行,但是当我尝试将 API 响应从字典转换为 pandas 时出现此错误。非常感谢任何关于我做错的提示:

TypeError:无法散列的类型:'dict'

代码中的最后一行搞砸了,shell 返回错误:

from urllib.request import urlopen
import json
import pandas as pd

api_key = ""
date = "20170601"
zip_code = "53711"

response = urlopen("http://api.wunderground.com/api/%s/history_%s/q/%s.json"     % (api_key, date, zip_code))

json_data = response.read().decode('utf-8', 'replace')

data = json.loads(json_data)

for observation in data['history']['observations']:
     print("Date/Time:    " + observation['date']['pretty'])
     print("Temperature:  " + observation['tempi'])
     print("Humidity:     " + observation['hum'])

df = pd.DataFrame([data], columns=data.keys())

屏幕截图是 shell 输出中数据的样子:

您可以使用 json_normalize with filtering columns, also is possible convert date column to_datetime:

from pandas.io.json import json_normalize

df = json_normalize(data['history']['observations'])

df = df[['date.pretty','tempi','hum']]
df['date.pretty'] = pd.to_datetime(df['date.pretty'])
print (df.head())
          date.pretty tempi hum
0 2017-06-01 00:15:00  49.8  83
1 2017-06-01 00:35:00  50.0  82
2 2017-06-01 00:55:00  49.1  85
3 2017-06-01 01:15:00  49.3  83
4 2017-06-01 01:35:00  48.2  85