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
相关产品推荐
相关产品推荐

