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
相关产品推荐
相关产品推荐

