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

如何用Pandas批量统计DataFrame每行奇偶数值数量并新增列存储

解决DataFrame每行奇偶数量统计并批量生成新列的问题

推荐方案:矢量化操作(高效)

Pandas的矢量化运算可以避免逐行循环,直接对整表进行计算,速度更快。

核心逻辑:

  • 判断每个元素是否为偶数(df % 2 == 0),得到布尔值矩阵
  • 按行求和(sum(axis=1)),得到每行偶数的数量,存入coleven列
  • 奇数数量可以用每行的总元素数(即DataFrame的列数)减去偶数数量,或者直接判断奇数后求和

完整代码:

import pandas as pd

# 读取数据
df = pd.read_csv('allornothingev.csv')

# 计算每行偶数数量
df['coleven'] = (df % 2 == 0).sum(axis=1)
# 计算每行奇数数量(两种写法二选一)
df['colodd'] = df.shape[1] - df['coleven']
# 或者 df['colodd'] = (df % 2 != 0).sum(axis=1)

# 输出结果
print(df)

备选方案:逐行处理(适合特殊逻辑场景)

如果需要自定义逐行处理逻辑,可以用apply方法遍历每行:

import pandas as pd

df = pd.read_csv('allornothingev.csv')

def calc_odd_even(row):
    even_count = sum(1 for val in row if val % 2 == 0)
    odd_count = len(row) - even_count
    return pd.Series([even_count, odd_count], index=['coleven', 'colodd'])

# 应用函数到每行,生成新列
df[['coleven', 'colodd']] = df.apply(calc_odd_even, axis=1)

print(df)

原代码问题说明

你的代码只处理了第0行(df.loc[0, :]),且循环中使用了未定义的numbers变量(应该是row_list),因此只能单行处理。上述两种方案都能批量处理所有行,其中矢量化操作优先推荐,性能远高于逐行循环。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 13:32:28