我有一个df,它只包含0和0。我想用这样的方式改变df:我用滑动窗口4通过列和所有行移动。例如,第一个窗口是df.iloc [:,0:4],如果这个窗口中没有任何1,我们就不会改变这个窗口中的任何东西。但如果我们在这个窗口中有1,只有1的行会更改为1。例如,对于窗口1,id=2具有1,因此对于行id=2,列0:4更改为1,对于行id=3也相同。我在这里提供了一个df,以及所需的输出。
我可以通过在df上循环来实现这一点,但是,我的df有数百万行,而且我的低效方法需要时间。你能帮我一下吗谢谢。
下面是DF:
import pandas as pd
df = pd.DataFrame()
df['Ids'] = [1, 2, 3]
df['a1'] = [0, 0, 0]
df['a2'] = [0, 0, 1]
df['a3'] = [0, 1, 1]
df['a4'] = [0, 1, 1]
df['a5'] = [0, 0, 0]
df['a6'] = [0, 0, 1]
df['a7'] = [1, 0, 1]
df['a8'] = [1, 0, 1]
df['a9'] = [0, 0, 0]
df['a10'] = [0, 0, 0]
df['a11'] = [0, 0, 0]
df['a12'] = [0, 0, 0]
字符串
下面是输出:
Ids a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12
0 1 0 0 0 0 1 1 1 1 0 0 0 0
1 2 1 1 1 1 0 0 0 0 0 0 0 0
2 3 1 1 1 1 1 1 1 1 0 0 0 0
型
1条答案
按热度按时间sg24os4d1#
在临时设置Ids作为索引后,在反向数组上使用
rolling.max
:字符串
或者使用
scipy.signal.convolve2d
的2D卷积:型
输出量:
型