我想创建一个数据框,其中包含我计算的历史值。
我的 df1 如下:
df1:
A B
0 2.0 3.0`
1 4.0 6.0
2 6.0 9.0
我计算 df1 的平均值如下:
m1 = df1.mean(axis=0)
m1:
A 4.0
B 6.0
'm1' 是从 0 到 2(索引)的整个数据系列的平均值。
我想要的不是获取 m1,而是获取历史时期均值的数据框。例如,我想获取每两个周期(两个连续索引)的平均值并将它们创建为数据框。我想要的输出如下:
# I want mean of two consecutive periods of each column as below.
df2:
A B
0 3.0 4.5
1 5.0 7.5
你能帮我解决这个问题吗?谢谢。
最佳答案
使用rolling()
,它为您想要的任何大窗口提供滚动窗口计算。从您的示例来看,您似乎希望窗口大小为 2(一次计算 2 行的平均值):
df1.rolling(2).mean()
A B
0 NaN NaN
1 3.0 4.5
2 5.0 7.5
唯一的问题是它为您的第一个索引提供了 NaN
,因为在第一行没有什么要计算的。你可以忽略它,但如果你想摆脱它,你可以切掉那一行:
df1.rolling(2).mean().iloc[1:].reset_index(drop=True)
A B
0 3.0 4.5
1 5.0 7.5
关于python - 如何使用计算数据创建历史数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49310303/