我想对一列取平均值,但我希望将平均值放入带有熊猫的新列中。
我想使用这种格式:
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,但是我想保持相同的行数。
答案 0 :(得分:3)
您可以为此使用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
答案 1 :(得分: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