Pandas列相除返回NaN问题:求爱尔兰完全接种疫苗人口占比
问题原因与解决方法
你的问题出在Pandas的索引对齐机制上:两个Series的索引分别是104和124391,Pandas执行元素级运算时会严格按照索引匹配,没有匹配到对应索引的位置就返回NaN——这和数据类型无关,所以转成float64也解决不了问题。
要得到正确的占比数值,有两种简单的处理方式:
方法一:直接提取标量计算(推荐,因为每个Series只有单个值)
直接取出两个Series里的单个数值进行计算,绕过索引对齐逻辑:
# 提取单个值 fully_vaccinated = ireland['people_fully_vaccinated'].iloc[0] population = ireland_population['population'].iloc[0] # 计算百分比 vaccination_percentage = (fully_vaccinated / population) * 100 print(f"爱尔兰完全接种疫苗人口占比: {vaccination_percentage:.2f}%")
方法二:统一索引后计算
如果需要保留Series格式,可以重置两个Series的索引使其一致,再进行除法运算:
# 重置索引,drop=True丢弃原索引列 ireland_vacc = ireland['people_fully_vaccinated'].reset_index(drop=True) ireland_pop = ireland_population['population'].reset_index(drop=True) # 计算占比 vaccination_percentage = (ireland_vacc / ireland_pop) * 100 print(vaccination_percentage)
内容的提问来源于stack exchange,提问作者MichaelLong102
相关产品推荐
相关产品推荐

