熊猫:如果有任何值小于上一个值,我如何检查多个列?

2022-12-01 04:43:03 发布

您现在位置:Python中文网/ 问答频道 /正文

这里已经提供了单个列的解决方案:Pandas: Check if column value is smaller than any previous column value

然而,我的数据集由许多列组成,我不想强制执行许多代码

示例数据集:

    c     d     e
0   3     5     8  
1   1     5     8  
2   5     6     8  
3   6     7     8   
4   2     1     9  
5   9     3     3  

预期结果:

    c     d     e   c_diff   d_diff   e_diff
0   3     5     8    False    False    False
1   1     5     8     True    False    False
2   5     6     8    False    False    False
3   6     7     8    False    False    False
4   2     1     9     True     True    False
5   9     3     3    False    False     True

有没有办法用简单的Python/Panda代码行来执行此任务


Tags: 数据代码falsetruepandasifisvaluecheckdiffanycolumn解决方案thansmaller
2条回答

您可以对整个数据帧进行操作:

df.lt(df.shift()).add_suffix('_diff')

给你

   c_diff  d_diff  e_diff
0   False   False   False
1    True   False   False
2   False   False   False
3   False   False   False
4    True    True   False
5   False   False    True

您可以加入:

df.join(df.lt(df.shift()).add_suffix('_diff'))

其中:

   c  d  e  c_diff  d_diff  e_diff
0  3  5  8   False   False   False
1  1  5  8    True   False   False
2  5  6  8   False   False   False
3  6  7  8   False   False   False
4  2  1  9    True    True   False
5  9  3  3   False   False    True

我们可以使用^{}^{}

df.diff().lt(0).add_suffix('_diff')

   c_diff  d_diff  e_diff
0   False   False   False
1    True   False   False
2   False   False   False
3   False   False   False
4    True    True   False
5   False   False    True