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

如何在Python Pandas中满足Age>Level时给Level列加5?

解决Pandas中根据条件修改列值的问题

你的代码无法实现需求,主要是几个细节没处理对,下面直接说问题和修正方案:

原代码的问题

  • 列名大小写不匹配:数据里的列是Age和Level,代码里写的是age和level,Pandas对列名大小写敏感,这会导致逻辑失效。
  • 错误使用if判断Series:df['Age'] > df['Level']返回的是布尔Series(每行的判断结果),直接用if会触发报错,因为Pandas无法识别这种整体判断逻辑。
  • 缺少赋值操作:df['Level']+5只是计算了新值,但没把结果存回原列,所以数据不会变化。
  • 打印逻辑错误:你的print只会执行一次,不会对应符合条件的行触发。

正确实现方案

下面提供两种简单可行的方法:

方法1:布尔索引赋值

先筛选出Age > Level的行,再给这些行的Level加5:

import pandas as pd

# 读取CSV(如果是空格分隔的CSV,用sep='\s+'处理)
df = pd.read_csv('your_file.csv', sep='\s+')

# 生成条件掩码
condition = df['Age'] > df['Level']
# 给符合条件的行的Level列加5
df.loc[condition, 'Level'] += 5

# 可选:提示修改的行数
if condition.any():
    print(f"{condition.sum()}条记录的Level已更新")

# 输出结果
print(df)

方法2:使用numpy.where

通过np.where一次性完成条件判断和赋值:

import pandas as pd
import numpy as np

df = pd.read_csv('your_file.csv', sep='\s+')

# 满足条件则Level+5,否则保持原值
df['Level'] = np.where(df['Age'] > df['Level'], df['Level'] + 5, df['Level'])

print(df)

运行结果

两种方法都会得到你期望的输出:

Name  Age  Level
0   John   40     50
1    Tom   50     50
2  Jerry   45     45

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 11:45:38