有没有办法在数据帧行上创建滚动窗口(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 6 8
1 B 1 1 3 3 2 4 6
我尝试使用df.rolling(),但只能在特定列上使用它
答案 0 :(得分:3)
您可以使用rolling
,但在功能中无法使用的所有列中的前set_index
,最后添加dropna
以删除所有NaN
列:
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
上次join
输出到原始文件:
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