如何将pandas Series列表转换为含name、value键的统一格式字典列表
问题原因
字典属于可变引用类型,你在循环外层仅初始化了一次attributesDicts字典,后续所有循环中修改的都是内存中同一个字典对象,append到列表时存入的也只是该字典的引用,因此最终列表里所有元素都会同步为最后一次修改的字典值,出现重复/仅保留最后一条数据的问题。
解决方法
方法1:修改原有写法
每次循环内部新建独立的字典对象即可:
names = [] for insta in instaList: for index, value in insta.iteritems(): # 每次循环都创建新的字典,避免引用同一个对象 attributesDicts = {"name": index, "value": str(value)} names.append(attributesDicts)
如果不需要把value转成字符串,去掉str()包裹即可。
方法2:更简洁的列表推导式写法
嵌套循环直接生成目标列表,代码更精简:
names = [{"name": name, "value": value} for insta in instaList for name, value in insta.items()]
方法3:pandas内置方法实现(适合大批量数据,效率更高)
利用pandas自带的格式转换能力,避免手写循环:
names = [] for s in instaList: names.extend(s.reset_index(name='value').rename(columns={'index':'name'}).to_dict('records'))
内容的提问来源于stack exchange,提问作者user3469337
相关产品推荐
相关产品推荐

