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

如何对Pandas DataFrame中每两行执行相乘后开平方操作?

实现DataFrame每两行相乘后取平方根的方法

嘿,我来帮你搞定这个DataFrame的计算需求!首先咱们先明确你的原始数据结构:你给出的是一个索引从0到5、对应6个数值的单列DataFrame(或者Series),需要把每相邻两行的数值相乘后取平方根,得到一个新的3行结果。

下面给你两种实用的实现方法,都是基于Python的pandas和numpy库:

方法一:用numpy重塑数组(高效简洁)

这种方法适合数据量较大的场景,利用numpy的数组重塑功能快速分组计算:

import pandas as pd
import numpy as np

# 第一步:构造你的原始数据(如果已经有DataFrame可以跳过这步)
original_data = [0.000313, 0.316426, 0.000313, 0.004389, 0.000000, 0.004389]
df = pd.Series(original_data, name='original_values').to_frame()

# 第二步:将数据重塑为每两行一组的二维数组
grouped_data = df.values.reshape(-1, 2)

# 第三步:计算每组的乘积平方根
result_values = np.sqrt(grouped_data[:, 0] * grouped_data[:, 1])

# 第四步:转换为目标DataFrame
result_df = pd.Series(result_values, name='result').to_frame()

运行后你会得到期望的结果:

result
0      0.009951
1      0.001172
2      0.000000

方法二:用pandas的groupby分组(直观易懂)

如果更习惯用pandas的分组逻辑,可以通过索引分组来实现:

import pandas as pd
import numpy as np

# 构造原始数据(同上)
original_data = [0.000313, 0.316426, 0.000313, 0.004389, 0.000000, 0.004389]
df = pd.Series(original_data, name='original_values').to_frame()

# 按索引整除2分组,每组包含相邻两行
result_df = df.groupby(df.index // 2).apply(lambda x: np.sqrt(x.iloc[0] * x.iloc[1])).to_frame('result')

这个方法的逻辑是:把索引0和1分到组0,索引2和3分到组1,索引4和5分到组2,然后对每个组取前两个元素计算乘积平方根,结果和方法一完全一致。

内容的提问来源于stack exchange,提问作者Mohssen Hassan Kassir

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:34:55