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

将Pandas两列DataFrame转为Series时结果全为NaN,求解决方案

问题分析与解决方法

错误原因

  1. 过滤行逻辑错误
    你试图移除值为0的行,但代码里写的是df[df["Runner"] > 0]——Runner列是字符串类型,和数字0比较完全不符合需求,正确的过滤对象应该是distance列(你要移除的是distance为0的行)。

  2. 创建Series的索引参数错误
    创建ser1时,index=df[df["Runner"]]是错误写法:df[df["Runner"]]本质是用布尔索引(但字符串列无法生成有效布尔值,实际会返回原DataFrame的子集),并非你需要的索引数组。这导致新Series的索引与data的索引不匹配,最终全为NaN。

解决步骤

1. 正确过滤目标行

针对distance列过滤掉值为0的行:

df = df[df["distance"] != 0]
# 等价写法:df = df[df["distance"] > 0]

2. 正确生成目标Series

直接传入正确的索引列即可:

ser1 = pd.Series(data=df["distance"], index=df["Runner"])

更简洁的写法可以用set_index一步完成:

ser1 = df.set_index("Runner")["distance"]

最终结果

执行上述代码后,得到的ser1与你的预期完全一致:

Runner
Runner1    2
Runner2    1
Runner4    1
Name: distance, dtype: int64

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 16:16:05