Python 3.x 数据帧行上的滚动窗口Python 3
有没有办法在数据帧行上创建一个滚动窗口(2个周期)并计算值的总和 我的数据:Python 3.x 数据帧行上的滚动窗口Python 3,python-3.x,pandas,Python 3.x,Pandas,有没有办法在数据帧行上创建一个滚动窗口(2个周期)并计算值的总和 我的数据: ID Name Value1 Value2 Value3 Value4 0 A 2 2 4 4 1 B 1 1 3 3 所需的输出: ID Name Value1 Value2 Value3 Value4 Rol1 Rol2 Rol3 0 A 2 2 4 4 4
ID Name Value1 Value2 Value3 Value4
0 A 2 2 4 4
1 B 1 1 3 3
所需的输出:
ID Name Value1 Value2 Value3 Value4 Rol1 Rol2 Rol3
0 A 2 2 4 4 4 6 8
1 B 1 1 3 3 2 4 6
我尝试使用df.rolling(),但只能在您可以使用的特定列上使用它,但首先是无法在函数中使用的列,最后是用于删除所有NaN
s列的添加:
df1 = (df.set_index(['ID','Name'])
.rolling(2, axis=1).sum()
.dropna(axis=1, how='all'))
#rename columns
df1.columns = ['Roll{}'.format(x) for x in range(1, len(df1.columns)+1)]
print (df1)
Roll1 Roll2 Roll3
ID Name
0 A 4.0 6.0 8.0
1 B 2.0 4.0 6.0
最后输出到原始文件:
df = df.join(df1, on=['ID','Name'])
print (df)
ID Name Value1 Value2 Value3 Value4 Roll1 Roll2 Roll3
0 0 A 2 2 4 4 4.0 6.0 8.0
1 1 B 1 1 3 3 2.0 4.0 6.0