在 Pandas 中连接连续的 1 块

阿诺德克莱因

将二进制序列{0,1}视为 Pandas DataFrame:第一列 'a' 是原始序列,列 'b' 是所需的输出。如果间隙(连续的 0 序列)大于某个常数 k(在这种情况下,k=4),则目标是连接 1 的块。

df
     a  b
180  1  1
181  1  1
182  1  1
183  0  0
184  0  0
185  0  0
186  0  0
187  0  0
188  0  0
189  1  1
190  1  1
191  1  1
192  1  1
193  1  1
194  1  1
195  0  **1**
196  0  **1**
197  0  **1**
198  1  1
199  1  1
200  1  1
201  0  **1**
202  1  1
203  1  1
204  1  1
205  1  1
206  1  1
207  1  1
208  1  1
209  1  1
210  1  1
211  0  **1**
212  0  **1**
213  1  1
214  1  1
215  1  1
216  1  1
217  1  1
218  1  1
219  1  1
220  1  1
221  1  1
222  1  1
223  1  1
224  1  1
225  0  **1**
226  1  1
227  1  1
228  1  1
229  0  **1**
230  1  1
231  1  1
232  1  1
233  1  1
234  1  1
235  1  1
236  0  **1**
237  1  1
238  1  1

我正在研究 Pandas,非常感谢整洁的 Pandasian 解决方案。

斯科特·波士顿

你可以试试这个:

k=4
df['zeros'] = df.groupby(df.a.cumsum()).cumcount()

df2 = df.assign(b=np.logical_or(df.groupby(df.a.cumsum())['zeros'].transform('max').mask(df.a.astype(bool)).le(k).astype(int),df.a).astype(int)).drop('zeros',axis=1)
print(df2)

输出:

     a  b
180  1  1
181  1  1
182  1  1
183  0  0
184  0  0
185  0  0
186  0  0
187  0  0
188  0  0
189  1  1
190  1  1
191  1  1
192  1  1
193  1  1
194  1  1
195  0  1
196  0  1
197  0  1
198  1  1
199  1  1
200  1  1
201  0  1
202  1  1
203  1  1
204  1  1
205  1  1
206  1  1
207  1  1
208  1  1
209  1  1
210  1  1
211  0  1
212  0  1
213  1  1
214  1  1
215  1  1
216  1  1
217  1  1
218  1  1
219  1  1
220  1  1
221  1  1
222  1  1
223  1  1
224  1  1
225  0  1
226  1  1
227  1  1
228  1  1
229  0  1
230  1  1
231  1  1
232  1  1
233  1  1
234  1  1
235  1  1
236  0  1
237  1  1
238  1  1

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python Pandas:从块中检索数据ID

来自分类Dev

从 Pandas DataFrame 中清除 CSS 样式块

来自分类Dev

elisp中1块的命令序列

来自分类Dev

Pandas GroupBy 日期块

来自分类Dev

在Pandas DataFrame中的if-then-else块中评估多个条件

来自分类Dev

在Pandas DataFrame中的if-then-else块中评估多个条件

来自分类Dev

32位阵列Verilog中的最大1位块

来自分类Dev

BeautifulSoup连续块

来自分类Dev

压缩连续的“ try”块

来自分类Dev

内联块不连续

来自分类Dev

连续内存块中的C ++原子操作

来自分类Dev

引导程序中连续居中的块

来自分类Dev

在MediaElement中连续播放视频块

来自分类Dev

setDownloadTaskDidWriteDataBlock块的totalBytesExpectedToWrite返回-1

来自分类Dev

RFComm连接块WiFi

来自分类Dev

python Pandas中的XML解析在一行中获得完整的标签块

来自分类Dev

处理连续块与不连续块的内存时的效率

来自分类Dev

为了使速度最大化,pandas read_csv中的最佳块大小是多少?

来自分类Dev

在Pandas / Numpy中,如何使用2个不同的列在每个块内实现滚动功能?

来自分类Dev

使用pandas DataFrame中两列的映射重构长的if-else块

来自分类Dev

== 20556 == 1个块中的16个字节肯定在丢失记录1 of 1中丢失

来自分类Dev

查找连续的0的块的索引

来自分类Dev

连续标记数据块

来自分类Dev

R子集匹配连续块

来自分类Dev

查找连续的0的块的索引

来自分类Dev

傻块中的块rspec测试

来自分类Dev

计算对角块矩阵中块的坐标

来自分类Dev

Jinja2中的块内块

来自分类Dev

在catch块中找不到连接对象?