鱼C论坛

 找回密码
 立即注册
查看: 2425|回复: 4

[已解决]怎么返回的值都是NaN?哪里写错了呀

[复制链接]
发表于 2023-6-7 10:38:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import pandas as pd
data = {'a':'tony','b':'jenny','c':'tom'}
s = pd.Series(data,index=[1,2,3])

print(s)



最佳答案
2023-6-7 10:43:36
这个问题是因为你在创建 pandas Series 时,索引与字典键的对应不一致导致的。你为 Series 提供的索引是数字,而字典的键是字符。这就是为什么你得到的所有结果都是 NaN。

在 pandas 中,Series 是一种一维的数据结构,类似于一维数组,列表或一列在数据库中的数据。每个 Series 都有一个索引,并且你可以通过这个索引访问 Series 中的元素。当你使用字典创建 Series 时,如果你没有指定索引,则 pandas 会默认使用字典的键作为索引。如果你指定了索引,则 pandas 会尝试使用这个索引找到字典中的值,如果找不到对应的键,则会返回 NaN。

下面是正确的代码,希望对你有所帮助:
import pandas as pd
data = {'1':'tony','2':'jenny','3':'tom'}
s = pd.Series(data,index=['1','2','3'])

print(s)
在这个代码中,我把字典的键改为字符串类型的数字,这样它们就可以和指定的索引匹配了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-7 10:43:36 | 显示全部楼层    本楼为最佳答案   
这个问题是因为你在创建 pandas Series 时,索引与字典键的对应不一致导致的。你为 Series 提供的索引是数字,而字典的键是字符。这就是为什么你得到的所有结果都是 NaN。

在 pandas 中,Series 是一种一维的数据结构,类似于一维数组,列表或一列在数据库中的数据。每个 Series 都有一个索引,并且你可以通过这个索引访问 Series 中的元素。当你使用字典创建 Series 时,如果你没有指定索引,则 pandas 会默认使用字典的键作为索引。如果你指定了索引,则 pandas 会尝试使用这个索引找到字典中的值,如果找不到对应的键,则会返回 NaN。

下面是正确的代码,希望对你有所帮助:
import pandas as pd
data = {'1':'tony','2':'jenny','3':'tom'}
s = pd.Series(data,index=['1','2','3'])

print(s)
在这个代码中,我把字典的键改为字符串类型的数字,这样它们就可以和指定的索引匹配了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-7 11:02:21 | 显示全部楼层
isdkz 发表于 2023-6-7 10:43
这个问题是因为你在创建 pandas Series 时,索引与字典键的对应不一致导致的。你为 Series 提供的索引是数 ...

里面是都必须是数字或者字母吗?还是字符串对应字符串就行?下面两种情况也是返回NaN
import pandas as pd
data={'a':'tony','b':'jen','c':'tom'}
s = pd.Series(data,index=['1','2','3'])

print(s)
import pandas as pd
data={'a':'tony','b':'jen','c':'tom'}
s = pd.Series(data,index=['h','i','j'])

print(s)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-7 11:06:25 | 显示全部楼层
hahadaxiao 发表于 2023-6-7 11:02
里面是都必须是数字或者字母吗?还是字符串对应字符串就行?下面两种情况也是返回NaN

Pandas Series 的索引(index)和数据字典(data)的键(key)必须严格匹配才行。在你给出的例子中,你的字典键是 'a','b','c',但你提供的索引是数字 ['1','2','3'] 或者字母 ['h','i','j']。因此,Pandas 在索引中寻找数据字典的键时,找不到匹配的项,结果返回了NaN。

不论是数字、字母还是其他类型,只要索引和键严格匹配就可以。字符串对应字符串是可以的,只要它们完全相同。例如,如果你的数据字典的键是字符串 '1','2','3',那么你的索引也应该是字符串 '1','2','3',而不是整数 1,2,3 或其他不同的字符串。

下面的代码,我把你的索引改为 'a','b','c',这样就可以匹配你的数据字典的键了:
import pandas as pd
data = {'a':'tony','b':'jen','c':'tom'}
s = pd.Series(data,index=['a','b','c'])

print(s)

如果你没有特别的需要,你其实可以不提供索引,Pandas 会自动使用字典的键作为索引。例如:
import pandas as pd
data = {'a':'tony','b':'jen','c':'tom'}
s = pd.Series(data)

print(s)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-7 11:07:14 | 显示全部楼层
hahadaxiao 发表于 2023-6-7 11:02
里面是都必须是数字或者字母吗?还是字符串对应字符串就行?下面两种情况也是返回NaN

还以为是重新设置索引值,理解错了,谢谢,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-27 11:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表