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

Python读取文件字符串传入for循环计算DataFrame中位数返回nan问题

问题原因

逐行读取本地文件时,每一行字符串的末尾默认会携带换行符\n,和df_genre中genre字段存储的无换行符的分类值无法匹配,导致loc筛选出的roi序列为空,空序列计算中位数自然返回nan。

解决方法

你可以通过字符串处理去除读取内容的多余换行符即可,有两种常用处理方案:

  • 方案1:直接去除每行首尾所有空白字符(包含换行符、多余空格、制表符等,适合分类名称本身无首尾空白的场景)
    修改后代码如下:
with open('genres_unique') as i:
    for line in map(str.strip, i):
        df_line = df_genre['roi'].loc[df_genre['genre'] == line].median()
        print(line, df_line)
  • 方案2:仅移除行尾的换行符(适合分类名称本身包含首尾空白的场景)
    修改后代码如下:
with open('genres_unique') as i:
    for line in i:
        # 仅移除末尾的换行符
        line = line.rstrip('\n')
        df_line = df_genre['roi'].loc[df_genre['genre'] == line].median()
        print(line, df_line)

如果要提前验证问题是否由换行符导致,可以在原代码的循环内加入print(repr(line)),输出结果如果带有\n后缀即可确认问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 00:06:04