【问题标题】:Pandas: Calculate the average every 2 rows of a column and put it into the a new columnPandas:计算一列每2行的平均值并将其放入新列
【发布时间】:2019-04-11 13:37:35
【问题描述】:

我想对一列进行平均,但我希望将平均值放入 pandas 的新列中。

我想摆脱这种格式:

values
10
5
8
7
2
5
6
7

转成这种格式:

values  average
10  nan
5   7.5
8   6.5
7   7.5
2   4.5
5   3.5
6   5.5
7   6.5

这里有类似的解决方案:Averaging every two consecutive index values(every 2min) in pandas dataframe,但我想保持相同的行数。

【问题讨论】:

  • 查看pandas.rolling

标签: python pandas dataframe average


【解决方案1】:

您可以为此使用 pd.Series.rolling (https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.rolling.html):

data = pd.Series([10, 5, 8, 7, 2, 5, 6, 7])
print(data.rolling(2).mean())

输出:

0    NaN
1    7.5
2    6.5
3    7.5
4    4.5
5    3.5
6    5.5
7    6.5
dtype: float64

【讨论】:

  • OP 希望滚动平均值作为现有数据框中的新列
【解决方案2】:

在另一个解决方案中,这些值正在替换有问题的列。我想将它们放入一个新列中。与此同时,感谢 Paul H,我设法想出了一个解决方案:

df = pd.DataFrame({'values': [10, 5, 8, 7, 2, 5, 6, 7]})
df["average"] = df["values"].rolling(2).mean()
print(df)

输出:

   values  average
0      10      NaN
1       5      7.5
2       8      6.5
3       7      7.5
4       2      4.5
5       5      3.5
6       6      5.5
7       7      6.5

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-22
    • 1970-01-01
    • 2016-09-02
    • 1970-01-01
    • 2019-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多