Pandas新建列报错TypeError: 'set' type is unordered问题咨询
错误原因
- 错误类型
TypeError: 'set' type is unordered的触发原因是你在给pandas DataFrame列赋值时,使用了无序的Python集合类型(用大括号{}包裹元素且没有键值对的结构)。 - pandas要求给列赋值的可迭代对象必须是有序结构,保证元素顺序和DataFrame的行顺序一一对应,集合本身不维护元素顺序,因此被pandas主动拦截报错。
- 你代码中的两处错误点:
missions['LM mass (kg)']和missions['CM mass (kg)']的赋值右侧都用了集合,需要替换为有序的列表(方括号[]包裹元素)。
正确实现代码
# 登月舱相关列 missions['Lunar module (LM)'] = ['Eagle (LM-5)', 'Intrepid (LM-6)', 'Antares (LM-8)', 'Falcon (LM-10)', 'Orion (LM-11)', 'Challenger (LM-12)'] # 原集合结构改为有序列表 missions['LM mass (kg)'] = [15103, 15235, 15264, 16430, 16445, 16456] missions['LM mass diff'] = missions['LM mass (kg)'].diff() missions['LM mass diff'] = missions['LM mass diff'].fillna(value=0) # 指令舱相关列 missions['Command module (CM)'] = ['Columbia (CSM-107)', 'Yankee Clipper (CM-108)', 'Kitty Hawk (CM-110)', 'Endeavor (CM-112)', 'Casper (CM-113)', 'America (CM-114)'] # 原集合结构改为有序列表 missions['CM mass (kg)'] = [5560, 5609, 5758, 5875, 5840, 5960] missions['CM mass diff'] = missions['CM mass (kg)'].diff() missions['CM mass diff'] = missions['CM mass diff'].fillna(value=0) missions
内容的提问来源于stack exchange,提问作者yaboku
相关产品推荐
相关产品推荐

