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

如何对Pandas DataFrame所有列的数组计算RMS、计数、求和并生成新DataFrame

批量计算Pandas DataFrame列内数组的RMS、Count与SUM

核心思路

利用Pandas的applymap方法对DataFrame中每个元素(即各列内的数组)批量应用计算函数,自动适配任意数量的列(包括300+列的场景),最终生成三个独立的结果DataFrame。

完整代码实现

1. 模拟原始数据(可替换为你的实际DataFrame)

import pandas as pd
import numpy as np

# 构造包含数组元素的多列DataFrame(示例仅2列,实际可支持任意数量)
raw_data = {
    'Sensor_A': [np.array([1.2, 3.4, 5.6]), np.array([7.8]), np.array([9.0, 2.1])],
    'Sensor_B': [np.array([4.3, 6.7, 8.9, 1.0]), np.array([2.3, 5.4]), np.array([7.6])],
    # 可继续添加更多列...
}
df_raw = pd.DataFrame(raw_data)

2. 定义计算函数

# 计算均方根(RMS)
def compute_rms(arr):
    return np.sqrt(np.mean(arr ** 2))

# 计算数组元素数量
def compute_count(arr):
    return len(arr)

# 计算数组元素求和
def compute_sum(arr):
    return arr.sum()

3. 生成结果DataFrame

# 对所有列的每个数组元素批量计算,生成三个结果DataFrame
Dataframe_RMS = df_raw.applymap(compute_rms)
Dataframe_Count = df_raw.applymap(compute_count)
Dataframe_SUM = df_raw.applymap(compute_sum)

结果示例

以示例中的df_raw为例,各结果DataFrame的输出如下:

Dataframe_Count(元素数量)

Sensor_A  Sensor_B
0         3         4
1         1         2
2         2         1

Dataframe_SUM(求和)

Sensor_A  Sensor_B
0      10.2      20.9
1       7.8       7.7
2      11.1       7.6

Dataframe_RMS(均方根)

Sensor_A  Sensor_B
0  3.957272  4.923810
1  7.800000  4.104875
2  5.746299  7.600000

扩展:处理含NaN的数组

如果你的数组中存在缺失值(NaN),可以修改计算函数以忽略NaN:

def compute_rms_with_nan(arr):
    return np.sqrt(np.nanmean(arr ** 2))

def compute_count_with_nan(arr):
    return np.count_nonzero(~np.isnan(arr))

def compute_sum_with_nan(arr):
    return np.nansum(arr)

# 生成处理NaN后的结果
Dataframe_RMS_NaN = df_raw.applymap(compute_rms_with_nan)
Dataframe_Count_NaN = df_raw.applymap(compute_count_with_nan)
Dataframe_SUM_NaN = df_raw.applymap(compute_sum_with_nan)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 12:24:20