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

如何仅对Pandas DataFrame指定行数应用Lambda函数执行列除法?

如何对Pandas DataFrame的特定行数应用Lambda函数处理C列?

我来帮你搞定这个需求,咱们先从确认你的DataFrame开始,先把数据加载好:

import pandas as pd

a = {'A': {0: 40.1, 1: 40.1, 2: 40.1, 3: 45.45, 4: 41.6, 5: 39.6}, 
     'B': {0: 41.0, 1: 43.6, 2: 41.65, 3: 47.7, 4: 46.0, 5: 42.95}, 
     'C': {0: 826.0, 1: 835.0, 2: 815.0, 3: 169.5, 4: 170.0, 5: 165.5}, 
     'D': {0: 889.0, 1: 837.0, 2: 863.3, 3: 178.8, 4: 172.9, 5: 170.0}}
df = pd.DataFrame(a)

接下来分几种场景给你解决方案,按需选用就行:

场景1:处理前N行(比如前3行)的C列

如果你想给前3行的C列做除法(比如除以100),用loc定位行和列,再结合apply+lambda就能实现:

# 对前3行的C列应用lambda执行除法
df.loc[df.index[:3], 'C'] = df.loc[df.index[:3], 'C'].apply(lambda x: x / 100)

执行后你的DataFrame会变成这样:

A      B      C      D
0  40.10  41.00   8.26  889.0
1  40.10  43.60   8.35  837.0
2  40.10  41.65   8.15  863.3
3  45.45  47.70 169.50  178.8
4  41.60  46.00 170.00  172.9
5  39.60  42.95 165.50  170.0

场景2:处理任意连续行数(比如第2到第4行)

要是你想处理中间某一段行,调整索引范围就行,比如处理索引1到3的行(也就是第2到第4行):

# 对索引1-3的行的C列除以2
df.loc[df.index[1:4], 'C'] = df.loc[df.index[1:4], 'C'].apply(lambda x: x / 2)

场景3:复杂逻辑的除法(结合其他列的值)

如果你的除法不是固定除数,需要用到同一行其他列的值,lambda就能派上大用场,比如让前3行的C列除以对应行的A列值:

# 前3行C列除以对应行的A列值,axis=1表示按行处理
df.loc[:2, 'C'] = df.loc[:2].apply(lambda row: row['C'] / row['A'], axis=1)

小提示:更高效的替代方案

如果只是简单的固定除数除法,其实不用lambda,直接做向量运算速度更快(尤其是数据量大的时候):

# 前3行C列直接除以100,和lambda效果一样但更高效
df.loc[:2, 'C'] = df.loc[:2, 'C'] / 100

另外,如果你不想修改原DataFrame,记得先复制一份:

df_copy = df.copy()
df_copy.loc[:2, 'C'] = df_copy.loc[:2, 'C'].apply(lambda x: x / 100)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:32:13