如何使用计算数据创建历史数据框?

时间:2018-03-15 22:33:08

标签: python pandas

我想创建一个具有历史值的数据框,其中包含我计算的值。

我的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
你能帮我解决这个问题吗?感谢。

2 个答案:

答案 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