我在Pandas的多个柱子上滚动一个窗口,我所拥有的是:
df = pd.DataFrame({'A':[1,2,3,4],'B':[5,6,7,8]})
def test(ts):
print(ts.shape)
df.rolling(2).apply(test)
然而问题是ts.shape
打印(2,)
并且我希望它打印(2,2)
,包括行和列的整个窗口。
关于滚动如何工作的直觉有什么问题?如何在使用Pandas后获得结果?
答案 0 :(得分:0)
您可以使用一点hack - 获取select_dtypes
长度的数字列并使用此标量值:
df = pd.DataFrame({'A':[1,2,3,4],'B':[5,6,7,8], 'C':list('abcd')})
print (df)
A B C
0 1 5 a
1 2 6 b
2 3 7 c
3 4 8 d
cols = len(df.select_dtypes(include=[np.number]).columns)
print (cols)
2
def test(ts):
print(tuple((ts.shape[0], cols)))
return ts.sum()
(2, 2)
(2, 2)
(2, 2)
(2, 2)
(2, 2)
(2, 2)
df = df.rolling(2).apply(test)