为了账号安全,请及时绑定邮箱和手机立即绑定

AttributeError:“NoneType”对象没有属性“iterrows”

AttributeError:“NoneType”对象没有属性“iterrows”

动漫人物 2022-06-28 17:22:29
我正在尝试在 rasa 中构建一个聊天机器人。但是我的班级ActionSearchRestaurants抛出了这个错误:对于索引,resrnt.iterrows() 中的行:AttributeError: 'NoneType' 对象没有属性 'iterrows'这是我正在使用的班级ActionSearchRestaurants。class ActionSearchRestaurants(Action):    def name(self):        return 'action_restaurant'    def run(self, dispatcher, tracker, domain):        config={ "user_key":"16cde****e0a12d10a7bc8bff6568031"}        zomato = zomatopy.initialize_app(config)        loc = tracker.get_slot('location')        cuisine = tracker.get_slot('cuisine')        location_detail=zomato.get_location(loc, 1)        cols = ['restaurant_name', 'restaurant_address', 'avg_budget_for_two', 'zomato_rating']        resrnt = pd.DataFrame(columns = cols)        d1 = json.loads(location_detail)        lat=d1["location_suggestions"][0]["latitude"]        lon=d1["location_suggestions"][0]["longitude"]        cuisines_dict={'bakery':5,'chinese':25,'cafe':30,'italian':55,'biryani':7,'north indian':50,'south indian':85}        results=zomato.restaurant_search("", lat, lon, str(cuisines_dict.get(cuisine)), 10)        d = json.loads(results)        response=""        if d['results_found'] == 0:            response= "no results"        else:            for restaurant in d['restaurants']:                curr_res = {'zomato_rating':restaurant['restaurant']["user_rating"]["aggregate_rating"],'restaurant_name':restaurant['restaurant']['name'],'restaurant_address': restaurant['restaurant']['location']['address'], 'avg_budget_for_two': restaurant['restaurant']['average_cost_for_two']}                resrnt = resrnt.append(curr_res, ignore_index=True)        resrnt=resrnt.sort_values(by=['zomato_rating'], ascending=False, inplace=True)        for index, row in resrnt.iterrows():                response = response+ index + ". Found \""+ row['restaurant_name']+ "\" in "+ row['restaurant_address']+" has been rated "+ row['zomato_rating']+"\n"        dispatcher.utter_message("-----"+ response)        return [SlotSet('location',loc)]
查看完整描述

1 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

在这条线上:

resrnt=resrnt.sort_values(by=['zomato_rating'], ascending=False, inplace=True)

从Dataframe.sort_values的文档中:

返回:sorted_objDataFrameNone

如果 inplace=False,则 DataFrame 具有排序值,否则为 None。

因为inplace=True,DataFrame 被替换为None,当然没有.iterrows.

要么使用inplace=False(或省略它),要么不重新分配。(使用的一个具体原因inplace=True是不需要重新分配。)


查看完整回答
反对 回复 2022-06-28
  • 1 回答
  • 0 关注
  • 181 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信