混合字典与字符串的列表转换为pandas DataFrame报错如何解决?
错误原因
你的列表appendlist中同时包含字典和字符串两类元素:
- 正常地理编码返回结果是字典结构,pandas可以直接解析为DataFrame的行
- 无查询结果时返回的是
no data for: xxx格式的字符串,没有字典的keys属性,导致pandas构造DataFrame时解析失败。
解决方案
方案1:过滤无效条目,只保留有效地理编码结果
该方案适合仅需要有效地理编码结果做后续分析的场景,执行速度快。
先对列表做预处理,只筛选类型为字典的元素再传入DataFrame:
import pandas as pd # 过滤仅保留字典类型的有效结果 valid_data = [item for item in appendlist if isinstance(item, dict)] df = pd.DataFrame(valid_data)
如果需要单独留存无效查询记录,可以同步提取字符串条目:
invalid_queries = [item for item in appendlist if isinstance(item, str)]
方案2:保留所有条目,统一结构后生成DataFrame
该方案适合需要留存全量查询记录、便于后续回溯无效查询的场景。
先把所有元素标准化为字典格式再生成DataFrame:
import pandas as pd processed_data = [] for item in appendlist: if isinstance(item, dict): processed_data.append(item) else: # 把无数据提示转为统一结构的字典,用自定义字段标识无效查询 processed_data.append({ "remark": item, "place_id": None, "licence": None, "osm_type": None, "osm_id": None, "boundingbox": None, "lat": None, "lon": None, "display_name": None, "class": None, "type": None, "importance": None }) df = pd.DataFrame(processed_data)
内容的提问来源于stack exchange,提问作者ASH
相关产品推荐
相关产品推荐

