Pandas:为无指定Key的Series添加键值对时报错求助
解决Pandas Series添加缺失键值对时的'int'对象不支持赋值错误
错误原因
你的代码里my_series = my_series[item] = 0这行是问题核心:
连续赋值会把my_series直接覆盖成int类型的0,而非保留原Series对象。下一次循环时,你试图对int类型变量执行索引赋值操作,自然触发'int' object does not support item assignment错误。
修复后的循环写法
去掉多余的赋值语句,直接给Series的缺失键赋值即可,同时注意不要用list作为变量名(会覆盖Python内置类型):
# 替换成你的目标键列表,不要用list当变量名 target_keys = ["需要检查的键1", "需要检查的键2"] for item in target_keys: # 用index判断比keys()更符合Pandas的使用习惯 if item not in my_series.index: my_series[item] = 0
更高效的Pandas风格实现(无需循环)
如果目标键是一个列表,推荐用reindex方法一次性补全所有缺失键,比循环更高效:
target_keys = ["键A", "键B", "键C"] # 重新索引,缺失的键自动填充为0 my_series = my_series.reindex(target_keys, fill_value=0)
或者通过合并新Series的方式补全:
target_keys = ["键A", "键B", "键C"] # 筛选出缺失的键 missing_keys = [k for k in target_keys if k not in my_series.index] # 创建缺失键对应的全0Series new_part = pd.Series([0]*len(missing_keys), index=missing_keys, dtype='int64') # 合并到原Series my_series = pd.concat([my_series, new_part])
内容的提问来源于stack exchange,提问作者Squirtle
相关产品推荐
相关产品推荐

