如何将爬虫获取的汽车数据列表转换为指定结构的pandas dataframe
爬取车辆信息转Pandas DataFrame实现方案
推荐直接在爬取阶段收集数据,不需要额外处理打印后的输出,实现代码如下:
import pandas as pd import requests # 初始化存储所有车辆信息的列表 car_list = [] for url in urls: page = requests.get(url) # 此处保留你原有获取car对象和car_table列表的逻辑 # 将car_table的[属性,值,属性,值]结构转为字典 car_attr_dict = dict(zip(car_table[::2], car_table[1::2])) # 补充车辆名称字段 car_attr_dict['name'] = car.name car_list.append(car_attr_dict) # 转换为DataFrame,自动适配所有属性列 car_df = pd.DataFrame(car_list) # 若需要将车辆名称设为行索引,执行以下代码 car_df = car_df.set_index('name') # 若需要去除属性值的kg、cm单位后缀,执行以下代码 car_df = car_df.replace(r'(kg|cm)$', '', regex=True)
如果已经有打印好的输出文本需要处理,实现代码如下:
import pandas as pd from ast import literal_eval # 读取输出文本,此处假设输出保存在output.txt中 with open('output.txt', 'r', encoding='utf-8') as f: content_lines = [line.strip() for line in f.readlines() if line.strip()] car_list = [] for idx in range(0, len(content_lines), 2): # 读取车辆名 car_name = content_lines[idx] # 将字符串格式的列表转为实际列表对象 car_table = literal_eval(content_lines[idx+1]) # 同爬取阶段的转换逻辑 car_attr_dict = dict(zip(car_table[::2], car_table[1::2])) car_attr_dict['name'] = car_name car_list.append(car_attr_dict) car_df = pd.DataFrame(car_list).set_index('name').replace(r'(kg|cm)$', '', regex=True)
两种方案都不需要提前知道属性数量和车辆数量,会自动适配所有数据生成对应结构的DataFrame。
内容的提问来源于stack exchange,提问作者Ninja
相关产品推荐
相关产品推荐

