我需要编写代码来检查某个值是否在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/