【发布时间】:2021-09-04 10:33:08
【问题描述】:
我有一个巨大的数据框,其中包含很多零值。而且,我想计算零值之间的数字的平均值。为简单起见,数据显示例如 10 个连续值,然后呈现零,然后再次呈现值。我只是想告诉python计算每个数据块的平均值。
图片展示了一个例子
【问题讨论】:
-
请提供足够的代码,以便其他人更好地理解或重现问题。
标签: python pandas dataframe average
我有一个巨大的数据框,其中包含很多零值。而且,我想计算零值之间的数字的平均值。为简单起见,数据显示例如 10 个连续值,然后呈现零,然后再次呈现值。我只是想告诉python计算每个数据块的平均值。
图片展示了一个例子
【问题讨论】:
标签: python pandas dataframe average
首先,我有点困惑您为什么要使用 DataFrame。这更有可能存储在 pd.Series 中,而我建议将数字数据存储在 numpy 数组中。假设您面前有一个 pd.Series 并且您正在尝试计算两个连续点之间的移动平均线,您可以采用两种方法。
最后一个整数补零:
假设循环并取第一个值和最后一个值之间的平均值
这是预期的代码:
import numpy as np
import pandas as pd
data_series = pd.Series([0,0,0.76231, 0.77669,0,0,0,0,0,0,0,0,0.66772, 1.37964, 2.11833, 2.29178, 0,0,0,0,0])
np_array = np.array(data_series)
#assuming zero_padding
np_array_zero_pad = np.hstack((np_array, 0))
mvavrg_zeropad = [np.mean([np_array_zero_pad[i], np_array_zero_pad[i+1]]) for i in range(len(np_array_zero_pad)-1)]
#asssuming circularity
np_array_circ_arr = np.hstack((np_array, np_array[-1]))
np_array_circ_arr = [np.mean([np_array_circ_arr[i], np_array_circ_arr[i+1]]) for i in range(len(np_array_circ_arr)-1)]
【讨论】: