在检索到他们各自的业务 ID 后,我正在尝试提取点击 Yelp API 的餐厅列表的营业时间:
我最初定义的功能是:
def is_clocked(business_id):
#import pdb; pdb.set_trace()
try:
clocked_ind = get_business(API_KEY, business_id)
clocked_ind1 = clocked_ind['hours']
except:
clocked_ind1 = 'None'
return clocked_ind1
clocked_ind = is_clocked(b_id)
print(clocked_ind)
然而,这个函数返回给我一个长数据而不是宽数据格式:
坏格式:
Querying https://api.yelp.com/v3/businesses/9GzjKeifGJ6KzWkaPftYHg ...
[{'open': [{'is_overnight': False, 'start': '1100', 'end': '2200', 'day': 0}, {'is_overnight': False, 'start': '1100', 'end': '2200', 'day': 1}, {'is_overnight': False, 'start': '1100', 'end': '2200', 'day': 2}, {'is_overnight': False, 'start': '1100', 'end': '2200', 'day': 3}, {'is_overnight': False, 'start': '1100', 'end': '2200', 'day': 4}, {'is_overnight': False, 'start': '1100', 'end': '2200', 'day': 5}, {'is_overnight': False, 'start': '1100', 'end': '2100', 'day': 6}], 'hours_type': 'REGULAR', 'is_open_now': True}]
我希望我的最终输出在 csv 中看起来像这样:
(输入)
day = [0, 1,2,3,4,5,6]
start = [1100, 1100, 1100, 1100, 1100, 1100, 1100]
end = [2200, 2200, 2200, 2200, 2200, 2200, 2100]
day1 = []
for i in day:
day1.append("start"+str(i))
for i in range(len(day1)):
merge_HOO[day1[i]]=start[i]
pd.DataFrame(merge_HOO, index=[0])
#Desired Output[115]:
item day start end end0 ... start2 start3 start4 start5 start6
0 0 0 1100 2200 2200 ... 1100 1100 1100 1100 1100
但正如您所注意到的:我为曾经的特定业务手动编码了输入。我想创建一个循环,以便它在 csv 中为每个 business_id 返回我想要的输出。我也写了下面的代码,但我觉得必须有更好的方法来制作这个循环。下面的代码需要是一个函数:
day = day_open(b_id)
start = day_start(b_id)
end = day_end(b_id)
day1 = []
for i in day:
day1.append("start"+str(i))
dict1 = {}
for i in range(len(day1)):
dict1[day1[i]]=start[i]
start_df = pd.DataFrame(dict1, index=[0])
day2 = []
for i in day:
day2.append("end"+str(i))
dict2 = {}
for i in range(len(day2)):
dict2[day2[i]]=end[i]
end_df = pd.DataFrame(dict2, index=[0])
start_df['end0']=end_df['end0']
start_df['end0']=end_df['end0']
start_df['end0']=end_df['end0']
start_df['end0']=end_df['end0']
start_df['end0']=end_df['end0']
start_df['end0']=end_df['end0']
我想把它放在一个循环中,如下所示:
def id_loop(a):
empty = []
for i in input_range:
review_count_ind = is_review_count(a[i])
empty.append(review_count_ind)
return empty
c = id_loop(a)