滚动总和

yat*_*atu 7 python pandas

假设我有一个包含字符串的数据框,例如:

df = pd.DataFrame({'col1':list('some_string')})

    col1
0     s
1     o    
2     m
3     e
4     _
5     s
...
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种方法来应用滚动窗口,col1并以一定的窗口大小连接字符串。举例来说window=3,我要获取(没有最少的观察数):

     col1
0     s
1     so
2     som
3     ome
4     me_
5     e_s
6     _st
7     str
8     tri
9     rin
10    ing
Run Code Online (Sandbox Code Playgroud)

我尝试了显而易见的解决方案,rolling这些解决方案无法处理对象类型:

df.col1.rolling(3, min_periods=0).sum()
df.col1.rolling(3, min_periods=0).apply(''.join)
Run Code Online (Sandbox Code Playgroud)

两者都提高:

无法处理此类型->对象

是否有通用的方法(不shift用于匹配的这种特定情况w=3)?

Ian*_*anS 2

换个系列怎么样?

df.col1.shift(2).fillna('') + df.col1.shift().fillna('') + df.col1
Run Code Online (Sandbox Code Playgroud)

推广到任意数字:

pd.concat([df.col1.shift(i).fillna('') for i in range(3)], axis=1).sum(axis=1)
Run Code Online (Sandbox Code Playgroud)