我正在努力成为一个自学成才的数据分析师。在Pandas中,当我在代码的第二部分索引不同的名字时,值从450变成了Nan,从500变成了Nan,380变成了380.0(浮点数)。同时,dtype从int64变成了float64。你知道为什么会发生这种情况吗?如果我从w3schools复制一个例子,它显示得很好。
import numpy as np
import pandas as pd
calories= {"Day 1": 450, "Day 2": 500, "day 3": 380}
new_series= pd.Series(calories)
print(new_series)
**#Second part of code**
new_series_1= pd.Series(calories, index=["day 1", "day 2", "day 3"])
print(new_series_1)
2条答案
按热度按时间fsi0uk1n1#
我试了你的代码。这是一个简单的修复。Python,像很多程序一样是区分大小写的。你只需要修改你的语句。
更改自:
至:
注意大写字母。
当我确保列名匹配时,我得到了类似的输出。
希望能有所帮助。
祝你好运
rjee0c152#
tl;dr
在
new_series_1
中,calories
键与index
值不匹配,并且正在使用后者重新索引Series,因此出现NaN
和float64
。说明
首先用
calories
初始化new_series
,它是一个具有int
值的dict
:所以Pandas知道它们最好被当作
int64
。然后在index中设置2个不同的值,
day 1
和day 2
,不大写:在
calories
的键和index
的值之间不再有对应关系,所以Pandas默认为float64
以进行最佳猜测。事实上,docs中的一个例子表明:使用指定的索引从字典构造系列
字典的键与索引值匹配,因此索引值无效。
请注意,索引首先是使用字典中的键构建的。在此之后,使用给定的索引值重新索引Series,因此我们得到的结果是所有NaN。
在这里,它解释了何时基于
Index
更改dtype
:**如果dtype是None,我们会寻找最适合数据的dtype。**如果提供了实际的dtype,我们会胁迫使用该dtype(如果安全的话)。否则,会引发错误。