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

DataFrame最后一行Medium/Minimum Rating列转换失败,求排查原因

问题描述

我需要对字母评级进行排名,生成特定格式的最小排名与中位数评级。目前已将大部分行的最小排名和中位数评级转换为正确格式,但这两列的最后一行未成功转换,请求排查原因。

背景与代码实现

  1. 读取CSV创建DataFrame:
import pandas as pd
import numpy as np

df = pd.read_csv('csv path', usecols=['rating1','rating2','rating3'])

初始DataFrame结构:

rating1rating2rating3
0DDdc
1CBbA
2BBbb
  1. 定义映射字典:
# 字母转数值排名
ranking = {
    'D': 1, 'Dd': 1, 'd': 1, 'C':2, 'Cc': 2, 'c': 2, 'B': 3, 'Bb': 3, 'b':3,  'A' : 4
}
# 数值排名转回字母
rating1_rank = {
    1: 'D', 2: 'C', 3: 'B', 4: 'A'
}
  1. 生成评级列的逻辑:
df['Medium_Rating'] = np.where(df.replace(ranking).nunique(axis=1).isin([1,2]),
                              df.replace(ranking).min(axis=1),
                              df.replace(ranking).median(axis=1))
df['Minimum_Rating'] = df.replace(ranking).min(axis=1)
  1. 尝试转换数值为字母的代码:
df[:-1] = df.replace(rating1_rank)
df[:-2] = df.replace(rating1_rank)

实际错误结果

最后一行的Medium_Rating和Minimum_Rating仍为数值3,未转换为字母B:

rating1rating2rating3medium_ratingminimum_rating
0DDdcDD
1CBbABC
2BBbb33
问题原因与解决方案

原因分析

你使用的df[:-1]和df[:-2]切片逻辑存在问题:

  • df[:-1]代表选取除最后一行之外的所有行,直接跳过了最后一行的转换操作
  • df[:-2]代表选取除最后两行之外的所有行,这一步甚至会覆盖第二行的转换结果

这就导致最后一行的数值评级始终没有被映射回字母格式。

解决方案

直接对目标列执行全局替换,或者在生成评级列时一步完成数值到字母的转换:

方案1:针对目标列全局替换

# 单独替换Medium_Rating和Minimum_Rating列的数值为字母
df['Medium_Rating'] = df['Medium_Rating'].map(rating1_rank)
df['Minimum_Rating'] = df['Minimum_Rating'].map(rating1_rank)

方案2:生成评级列时直接转换

先计算数值形式的评级,立刻用map转换为字母,避免事后操作:

# 先统一转换为数值评级DataFrame,避免重复计算
num_df = df.replace(ranking)
# 生成Medium_Rating并直接转换为字母
df['Medium_Rating'] = np.where(num_df.nunique(axis=1).isin([1,2]),
                              num_df.min(axis=1),
                              num_df.median(axis=1)).map(rating1_rank)
# 生成Minimum_Rating并直接转换为字母
df['Minimum_Rating'] = num_df.min(axis=1).map(rating1_rank)

两种方案都能确保所有行(包括最后一行)完成数值到字母的转换,得到预期结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 04:25:17