我想创建一个具有历史值的数据框,其中包含我计算的值。
我的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
你能帮我解决这个问题吗?感谢。
答案 0 :(得分:2)
使用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
答案 1 :(得分:2)
如果您使用的是移动窗口2,则可以考虑shift
(df.add(df.shift())/2).dropna()
Out[25]:
A B
1 3.0 4.5
2 5.0 7.5