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

Pandas中如何对指定行列执行条件除法并保留完整DataFrame

Pandas:仅对指定行列执行除法并保留完整DataFrame

我有一个包含500余列的Pandas DataFrame,需求是:对第0列值为'dog'的行,将其第2列至最后一列的数值除以100。

原始数据示例

0       1       2       3
cat    2019   19.80   96.28
cat    2022   19.50   66.80
dog    2022   21.10   57.70
dog    2021   21.50   42.85

期望输出

0       1       2       3
cat    2019   19.80    96.28
cat    2022   19.50    66.80
dog    2022   0.211    0.577
dog    2021   0.215    0.4285

现有问题代码

现有代码可完成指定行列的除法操作,但会删除第0、1列以及非'dog'的行:

df=df[df[0].str.contains("dog")].loc[:,2:len(r2.columns)-1].div(100)

解决方案

要保留完整DataFrame,只需针对符合条件的行和列进行原地修改,无需替换整个DataFrame:

方法1:直接使用布尔索引赋值

# 精准匹配第0列为'dog'的行,对第2列至末列执行除法
df.loc[df[0] == 'dog', 2:] = df.loc[df[0] == 'dog', 2:] / 100

如果第0列的值可能包含'dog'(比如'doggy'),可以用字符串包含匹配:

df.loc[df[0].str.contains('dog'), 2:] = df.loc[df[0].str.contains('dog'), 2:] / 100

方法2:使用div方法

和上面逻辑一致,只是用div替代除法运算符:

df.loc[df[0] == 'dog', 2:] = df.loc[df[0] == 'dog', 2:].div(100)

以上两种方式都会保留所有行和列,仅修改目标范围内的数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 23:18:31