我的输入是df:

   COLUMN_1  COLUMN_2  COLUMN_3  COLUMN_4
0         0         1         0         2
1         1         1         2         3
2         1         2         3         2
3         1         2         4         5
4         4         5         8         8

我希望我可以隐藏(水平地,从左到非包括右)差值等于1的单调序列.例如,如果我们在一行中有[4, 5, 8, 8]个(像上一个),那么相关的序列是[4, 5).因此,我们需要使用emty字符串隐藏数字4.

我的预期输出是:

  COLUMN_1 COLUMN_2 COLUMN_3  COLUMN_4
0                 1        0         2
1        1                           3
2                          3         2
3                 2                  5
4                 5        8         8

解释:

enter image description here

我try 了下面的代码,但我没有找到正确的方向,因为我得到了一个奇怪的布尔数据帧.

df.diff(axis=1).eq(1).iloc[:, ::-1].cummax(axis=1).replace(True, '').iloc[:, ::-1]

推荐答案

您需要在diff中使用负句点,并与mask结合使用:

out = df.mask(df.diff(-1, axis=1).eq(-1), '')

或者,对于就地修改:

df[df.eq(df.shift(-1, axis=1)-1)] = ''

shift的变种:

out = df.mask(df.eq(df.shift(-1, axis=1)-1), '')

输出:

  COLUMN_1 COLUMN_2 COLUMN_3  COLUMN_4
0                 1        0         2
1        1                           3
2                          3         2
3                 2                  5
4                 5        8         8

中间体:

# df.diff(-1, axis=1)
   COLUMN_1  COLUMN_2  COLUMN_3  COLUMN_4
0        -1         1        -2       NaN
1         0        -1        -1       NaN
2        -1        -1         1       NaN
3        -1        -2        -1       NaN
4        -1        -3         0       NaN

# df.shift(-1, axis=1)
   COLUMN_1  COLUMN_2  COLUMN_3  COLUMN_4
0         1         0         2       NaN
1         1         2         3       NaN
2         2         3         2       NaN
3         2         4         5       NaN
4         5         8         8       NaN

Python相关问答推荐

螺旋桨图上意外颠倒的次y轴

如何修复fpdf中的线路出血

在Python中使用readline函数时如何向下行

使用imap-tools时错误,其邮箱地址包含域名中的非默认字符

将从Python接收的原始字节图像数据转换为C++ Qt QIcon以显示在QStandardProject中

如何使用PyTest根据self 模拟具有副作用的属性

如何在矩阵上并行化简单循环?

在Windows上启动新Python项目的正确步骤顺序

Odoo -无法比较使用@api.depends设置计算字段的日期

当密钥是复合且唯一时,Pandas合并抱怨标签不唯一

运行回文查找器代码时发生错误:[类型错误:builtin_index_or_system对象不可订阅]

try 在树叶 map 上应用覆盖磁贴

为什么带有dropna=False的groupby会阻止后续的MultiIndex.dropna()工作?

什么是合并两个embrame的最佳方法,其中一个有日期范围,另一个有日期没有任何共享列?

通过ManyToMany字段与Through在Django Admin中过滤

lityter不让我输入左边的方括号,'

* 动态地 * 修饰Python中的递归函数

如何在PySide/Qt QColumbnView中删除列

在Docker容器(Alpine)上运行的Python应用程序中读取. accdb数据库

为什么Python内存中的列表大小与文档不匹配?