Фрейм данных Pandas из URL json data — ошибка ключа не может индексировать или фильтровать по ключам

#python #json #pandas

Вопрос:

 import pandas as pd

url = "https://api.reserve.albertaparks.ca/api/public/campgrounds/62/availability?campingType=campsite" 
      "amp;arrivalDt=01-Aug-2021amp;departureDt=13-Aug-2021amp;unitSize=40amp;siteType=VEH"
result = pd.read_json(url)
print(result)

df = pd.DataFrame(result)
df = df[df['available']]
df.set_index('date', inplace=True)
print(df)
 

Я пытаюсь возвращать только результаты, где «доступно» = True, и форматировать результаты, как показано ниже, без таблицы. Вероятно, используя таблицу, но не уверен.

Дата Доступно fcfs
01-Авг-2021 Правда Ложный
02-Авг-2021 Правда Ложный
03-Авг-2021 Правда Ложный
04-Авг-2021 Правда Ложный

Ответ №1:

 result = pd.read_json(url)
df = pd.DataFrame.from_records(result['availability'])
df = df.loc[lambda x: x['available']].set_index("date")
print(df) # or tabulate(df)
 

Ответ №2:

вы можете использовать json_normalize пакет from pandas, а затем использовать обычную фильтрацию

 df1 = pd.json_normalize(df.availability)
df2 = df1[df1['available']==True]

           date  available   fcfs
1   02-Aug-2021       True  False
2   03-Aug-2021       True  False
3   04-Aug-2021       True  False
4   05-Aug-2021       True  False
5   06-Aug-2021       True  False
7   08-Aug-2021       True  False
8   09-Aug-2021       True  False
9   10-Aug-2021       True  False
10  11-Aug-2021       True  False
11  12-Aug-2021       True  False

 

Комментарии:

1. можно ли запускать этот код каждые 5 минут и печатать только результаты изменений?