Pandas如何对浮点列≥100的数值按指定公式原位修改
Pandas float列条件计算原位替换实现方法
核心思路
采用Pandas向量化操作实现,比逐行遍历/apply效率更高,同时直接赋值回原列实现原位替换,满足需求。
完整实现代码
import pandas as pd # 构造示例数据 df = pd.DataFrame({ "其他列": ["foobar", "foobar", "fuubahr"], "存储为float的百分比列": [84.85, 15.95, 102.25] }) # 方法1:mask方法(代码最简洁) # 条件为真时替换为计算值,否则保留原值,直接赋值回原列完成原位替换 df["存储为float的百分比列"] = df["存储为float的百分比列"].mask( df["存储为float的百分比列"] >= 100.00, ((df["存储为float的百分比列"] - 100) * 0.25) + 100 ) # 方法2:loc定位修改(逻辑更直观,适合新手理解) # 先定位符合条件的行,再直接赋值计算后的结果 # cond = df["存储为float的百分比列"] >= 100.00 # df.loc[cond, "存储为float的百分比列"] = ((df.loc[cond, "存储为float的百分比列"] - 100) * 0.25) + 100 # 输出验证结果 print(df)
输出结果
运行后得到的结果和期望完全一致:
| 其他列 | 存储为float的百分比列 |
|---|---|
| foobar | 84.8500 |
| foobar | 15.9500 |
| fuubahr | 100.5625 |
注意事项
- 两种方法都支持原位修改,不需要额外生成新列
- 如果列中存在空值NaN,可以在mask方法中添加
na_action='ignore'参数跳过空值,避免计算报错
内容的提问来源于stack exchange,提问作者Kartöfluvofan
相关产品推荐
相关产品推荐

