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

使用pandas对DataFrame两列做除法得到NaN值的原因及解决方法咨询

问题原因

DataFrame.apply()默认axis=0,即按列遍历执行传入的函数,你的代码逻辑需要按行取两列的值做除法,参数不匹配导致运算结果无法对齐到每一行,最终返回全NaN。

修复方案

方法1:为apply指定按行遍历参数

在apply中新增axis=1参数,明确指定逐行处理:

import pandas as pd

df = {'drive_mile': [15.1, 2.1, 7.12], 'price': [40, 9, 31]}
df = pd.DataFrame(df)
df['price/km'] = df[['drive_mile', 'price']].apply(lambda x: x[1]/x[0], axis=1)
print(df)

运行后输出正确结果:

drive_mile  price  price/km
0       15.10     40  2.649007
1        2.10      9  4.285714
2        7.12     31  4.353933

小提示:按行处理时建议用列名取值lambda x: x['price']/x['drive_mile'],避免列顺序变化导致运算逻辑错误。

方法2:使用pandas向量化运算(更推荐)

pandas原生支持整列的算术运算,不需要遍历,代码更简洁、性能远高于apply方案,是列间运算的最优实践:

df['price/km'] = df['price'] / df['drive_mile']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:54:03