You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas中字典索引值变NaN、类型转float64问题求助

问题解析:Pandas Series索引匹配与类型转换问题

1. NaN出现的原因

Pandas索引是大小写敏感的。你的字典calories键为"Day 1"、"Day 2"、"day 3",但创建new_series_1时指定的索引是["day 1", "day 2", "day 3"]——前两个索引首字母是小写d,和字典里的大写D不匹配,Pandas无法找到对应值,就会用NaN(缺失值)填充。只有第三个索引"day 3"和字典键完全一致,所以能正确取出380。

2. 数据类型从int64转为float64的原因

Pandas中的NaN属于numpy.float64类型,整数类型(int64)无法存储缺失值(整数没有“空值”的对应表示)。当Series中同时存在整数和NaN时,Pandas会自动将整个Series的类型升级为float64,以此容纳NaN,所以原本的整数380会被转为浮点型380.0。

3. w3schools示例正常的原因

示例里的字典键和指定索引是完全匹配的(包括大小写、拼写),Pandas能找到所有对应值,不会生成NaN,因此数据类型保持为int64。

修正代码示例

import pandas as pd

calories= {"Day 1": 450, "Day 2": 500, "day 3": 380}

# 方案1:让索引与字典键完全匹配
new_series_1= pd.Series(calories, index=["Day 1", "Day 2", "day 3"])
print(new_series_1)

# 方案2:统一字典键和索引的大小写(比如全小写)
calories_lower = {k.lower(): v for k, v in calories.items()}
new_series_2 = pd.Series(calories_lower, index=["day 1", "day 2", "day 3"])
print(new_series_2)

内容的提问来源于stack exchange,提问作者festus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 08:54:22