如何计算DataFrame中每行单元格的平方和并新增指定列?
实现每行单元格平方求和并添加新列
原始DataFrame
| Index | A | B | C | D | E |
|---|---|---|---|---|---|
| 0 | 4 | 2 | 4 | 4 | 1 |
| 1 | 1 | 4 | 1 | 4 | 4 |
| 2 | 3 | 1 | 2 | 0 | 1 |
| 3 | 1 | 0 | 2 | 2 | 4 |
| 4 | 0 | 1 | 1 | 0 | 2 |
实现方法
利用Pandas的向量化操作可以高效完成需求,无需逐行循环:
- 对DataFrame的数值列执行平方运算
- 沿行方向求和(
axis=1指定按行计算) - 将求和结果赋值给新列
sum of squares
代码示例
import pandas as pd # 构造原始DataFrame df = pd.DataFrame({ 'A': [4, 1, 3, 1, 0], 'B': [2, 4, 1, 0, 1], 'C': [4, 1, 2, 2, 1], 'D': [4, 4, 0, 2, 0], 'E': [1, 4, 1, 4, 2] }) # 计算每行平方和并添加新列 df['sum of squares'] = (df ** 2).sum(axis=1) print(df)
运行结果
| Index | A | B | C | D | E | sum of squares |
|---|---|---|---|---|---|---|
| 0 | 4 | 2 | 4 | 4 | 1 | 53 |
| 1 | 1 | 4 | 1 | 4 | 4 | 50 |
| 2 | 3 | 1 | 2 | 0 | 1 | 15 |
| 3 | 1 | 0 | 2 | 2 | 4 | 25 |
| 4 | 0 | 1 | 1 | 0 | 2 | 6 |
补充说明
- 向量化操作比逐行循环效率高得多,数据量越大优势越明显
- 如果只需针对部分列计算,可指定列子集,例如
df[['A', 'C', 'E']] ** 2来限定范围
内容的提问来源于stack exchange,提问作者kurapika
相关产品推荐
相关产品推荐

