如何获取DataFrame一维展开后连续3元素滚动和最小值?现有方法未达预期
解决方法
你的问题在于原代码是按列独立计算滚动和,而你需要的是将所有元素按行优先顺序展开后,计算连续3个元素的滚动和。以下是正确的实现步骤:
步骤1:将DataFrame展平为一维序列
首先把DataFrame的所有元素按「S1第一行→S2第一行→S3第一行→S1第二行→...」的顺序转换成一个一维序列:
import pandas as pd df = pd.DataFrame({ 'S1':[38.868, 39.231, 39.427, 38.992, 39.071, 39.003], 'S2':[63.631, 63.239, 63.463, 63.675, 63.571, 63.692], 'S3':[35.406, 35.483, 35.107, 35.346, 35.413, 35.362] }) # 展平为一维序列 flattened_series = pd.Series(df.values.flatten())
步骤2:计算滚动和并获取最小值
对展平后的序列应用滚动窗口求和,再提取最小值:
# 计算连续3个元素的滚动和 rolling_sums = flattened_series.rolling(window=3, min_periods=3).sum() # 获取滚动和中的最小值 min_rolling_sum = rolling_sums.min() print(min_rolling_sum) # 输出结果约为 137.562
内容的提问来源于stack exchange,提问作者Andrei Filep
相关产品推荐
相关产品推荐

