我需要编写代码来检查某个值是否在2个连续行之间,例如:


表示该值是否在row及其连续行之间。

df = pd.DataFrame(np.random.randint(0,100,size=(10, 1)), columns=list('A'))


输出为:

    A
0  67
1  78
2  53
3  44
4  84
5   2
6  63
7  13
8  56
9  24


我想做的是检查(假设我有一个设定值)“ 50”是否在所有连续行之间。

假设我们检查50是否在67和78之间,然后在78和53之间,显然答案是否定的,因此在B列中结果为0。

现在,如果我们检查50是否在53和44之间,那么我们将在B列中获得1,并使用cumsum()来计算50的值在A列中的连续行之间的次数。

更新:假设,如果我在C列中仅拥有2个类别:1和2。我如何确保在每个类别中分别执行检查?换句话说,一旦类别更改,检查就会重置?

所需的输出是:

    A   B   C   count
0  67   0   1    0
1  78   0   1    0
2  53   0   1    0
3  44   1   2    0
4  84   2   1    0
5   2   3   2    0
6  63   4   1    0
7  13   5   2    0
8  56   6   1    0
9  24   7   1    1


非常感谢您的帮助。

最佳答案

让我们从系列中减去“ 50”并检查符号变化:

import pandas as pd
import numpy as np

df = pd.DataFrame({'A':[67,78,53,44,84,2,63,13,56,24]}, columns=list('A'))

s = df['A'] - 50
df['count'] = np.sign(s).diff().fillna(0).ne(0).cumsum()
print(df)


输出:

    A  count
0  67      0
1  78      0
2  53      0
3  44      1
4  84      2
5   2      3
6  63      4
7  13      5
8  56      6
9  24      7

关于python - 如何检查该值是否在数据帧或numpy数组的两个连续行之间?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59340615/

10-12 00:36
查看更多