python - 如何从 yelp_academic_dataset_business.json 创建另一个 csv 文件,其中仅包含酒店、餐厅或两者的业务?
问题描述
1如何从 yelp_academic_dataset_business.json 创建另一个 csv 文件,其中仅包含酒店、餐厅或这两个类别的业务?
原始的 yelp 业务数据集包含只有牙医、美发沙龙等的行。我想选择酒店、餐馆和两者的业务。
我刚开始学习 python,正在学习机器学习实验的教程。下面的代码给了我一个错误。我用谷歌搜索并阅读了很多,但仍然不明白。任何帮助将不胜感激。
yelp_academic_dataset_business.csv 的样子
data2 = []
with open('yelp_academic_dataset_business.json') as f:
for line in f:
data2.append(json.loads(line))
len(data2)
business_id = []
city = []
state = []
stars = []
review_count = []
categories = []
postal_code = []
latitude = []
longitude = []
pricerange = []
is_open = []
name = []
for entry in range(0, len(data2)):
if "Restaurants" in data2[entry]["categories"]:
business_id.append(data2[entry]['business_id'])
name.append(data2[entry]['name'])
city.append(data2[entry]['city'])
state.append(data2[entry]['state'])
stars.append(data2[entry]['stars'])
postal_code.append(data2[entry]['postal_code'])
review_count.append(data2[entry]['review_count'])
categories.append(data2[entry]['categories'])
latitude.append(data2[entry]['latitude'])
longitude.append(data2[entry]['longitude'])
is_open.append(data2[entry]['is_open'])
if 'RestaurantsPriceRange2'in data2[entry]['attributes']:
pricerange.append(data2[entry]['attributes']['RestaurantsPriceRange2'])
else:
pricerange.append(0)
data2 = {'business_id ':business_id,'name':name,'city':city,'state':state,'stars':stars,'review_count':review_count,
'categories':categories,'latitude':latitude,'longitude':longitude,'is_open':is_open,'pricerange':pricerange,'postal_code':postal_code}
business_data = pd.DataFrame(data2)
解决方案
此错误意味着您正在对 None 对象进行迭代。
基本上data2[entry]['attributes']
不是一个列表,而是一个None
所以当你这样做时
if 'RestaurantsPriceRange2'in data2[entry]['attributes']:
您无法检查元素是否在列表中,因为它不是列表。
所以你必须先检查它是否是一个列表。正确的线是
if data2[entry]['attributes'] and
'RestaurantsPriceRange2'in data2[entry]['attributes']:
推荐阅读
- java - 使用 Play Framework 和 Logback 的 Java 内存泄漏
- sql - slick - 选项的动态过滤列表
- mysql - 如何在 XAMPP(Mac 版)中用 MySQL 替换 MariaDB
- javascript - 单击我的按钮重新加载另一个句子
- php - 如何修复 PHP 中的“没有这样的文件或目录错误”?
- python - 从二进制数组 [1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1] 绘制平方信号?
- python - 计算每个关键字和每个标识符的出现次数
- unity3d - 如何检查项目中是否安装了包
- html - 单击按钮并转到 Vue.js 中的页面部分
- swift - 位置跟踪弹跳当前位置并默认绘制路线