首页 > 解决方案 > Python 字典新索引返回 NaN 值

问题描述

我是 Python 新手,刚开始学习 Pandas。

我创建了一个字典并想更改索引。

但是,新索引显示所有值的 NaN,我预计分别为 3、5、8、-2。

我在这里附上了我的代码供您参考:

states = ['place1','place2','place3','place4']

sdata = dict(a=3,b=5,c=8,d=-2)

obj4 = pd.Series(sdata, index=states)
print(obj4)

place1   NaN
place2   NaN
place3   NaN
place4   NaN
dtype: float64

非常感谢你的帮助。

标签: pythonpandas

解决方案


当您使用字典创建系列时,键被视为索引,值是值。所以,

pd.Series(sdata)

会给你:

a    3
b    5
c    8
d   -2
dtype: int64

现在,如果另外,您传递indexpd.Series(some_dict)它相当于 a reindex

pd.Series(sdata).reindex(states)

并且由于states中不包含任何键sdata,因此您会得到一个由索引states并包含 all的系列NaN

如果您确定订单,您可以使用以下命令创建系列:

pd.Series(list(sdata.values()), index=states)

输出:

place1    3
place2    5
place3    8
place4   -2
dtype: int64

推荐阅读