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

如何在不使用NumPy的情况下对DataFrame每行前4个值求和

解决DataFrame每行取4个数求和的问题

首先明确你的实际需求:从每行5个数值中去掉最小的那个,剩余4个数求和(从你的示例结果可以看出,并非“前4列”求和)。

你的初始方法的精准性

你用每行总和减去该行最小值的方法,在你的需求场景下是完全精准的:

  • 第一行总和11,减去最小值0,得到9,正好是剩余4个数的和;
  • 第二行总和11,减去最小值0,得到11,符合预期结果;
  • 第三行总和19,减去最小值1,得到18,也和预期一致。

这个方法的优势是计算高效,代码简洁,且不需要依赖NumPy。

优化写法

可以避免重复索引列,让代码更简洁:

cols = ['a', 'b', 'c', 'd', 'e']
row_data = df[cols]
df['total'] = row_data.sum(axis=1) - row_data.min(axis=1)

更直观的替代方案

如果想让代码语义更明确,直接表达“取每行最大的4个数求和”,可以用nlargest方法,同样不需要NumPy:

cols = ['a', 'b', 'c', 'd', 'e']
df['total'] = df[cols].apply(lambda row: sum(row.nlargest(4)), axis=1)

这个方法和你的初始方法结果完全一致,但更清晰地体现了“保留4个较大值”的逻辑,尤其当一行存在多个相同最小值时,nlargest(4)会自动选取最大的4个值(包括重复的次小值),符合你的示例需求。

注意事项

如果你的需求是去掉所有最小值(比如一行有两个相同的最小值,需要全部去掉,只保留剩余3个数),那上述两种方法都不适用,此时需要先过滤掉所有最小值再求和,但从你的示例来看,这种情况并非你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 19:25:29