python - 如何根据某个奇数n对给定行之前和之后的pandas数据帧列进行平均?

标签 python python-3.x pandas

如果我有一个像这样的 pandas 数据框:

      Col A
 0      2
 1      3
 2      5
 3      4
 4      6
 5      2
 6      3
 7      1
 8      1
 9      7

还有一些像这样的奇怪数值

 n = 3

如何根据 n 的一半对要替换的值、之前和之后的值进行平均。对于 n = 3,我将计算之前和之后的值的平均值。这样我就得到了这样的 pandas 数据框:

      Col A   Col B
 0      2     np.nan
 1      3      3.33
 2      5       4
 3      4       5
 4      6       4
 5      2      3.67
 6      3       2
 7      1      2.5
 8      1       3
 9      7     np.nan

第一个和最后一个值是 np.nan,因为它们之前/之后没有值。

最佳答案

您可以将rollingcenter选项一起使用:

n = 3
df['Col A'].rolling(n, center=True).mean()

输出:

0         NaN
1    3.333333
2    4.000000
3    5.000000
4    4.000000
5    3.666667
6    2.000000
7    1.666667
8    3.000000
9         NaN
Name: Col A, dtype: float64

关于python - 如何根据某个奇数n对给定行之前和之后的pandas数据帧列进行平均?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57890614/

相关文章:

python - flask -SQLAlchemy, "Application not registered on db"

python - "Not found: Table"用于新的 bigquery 表

python-3.x - 如何修复 Nginx 连接到套接字失败(权限被拒绝)

python - 使用列值对excel文件进​​行排序python

python - Pandas:从以前的时间序列值创建列

python - 将 2010 Q1 转换为日期时间 2010-3-31

python - pandas.read_csv() 空(默认)值的奇怪行为

python - Tkinter 无法正确显示图像

python - 使用groupby后如何获得正确的平均值?

python - 从另外两个列表派生新的列表列表,如果 L1 中的元素不在 L2 中,则附加这些元素