对于此数据框:
columns = ['A','B', 'C']
data = np.array([[1,2,2] , [4,5,4], [7,8,18]])
df2 = pd.DataFrame(data,columns=columns)
df2['C']
如果列C的连续行之间的差值<= 2,则应返回前一行和当前行。因此,我尝试过滤掉前一行与之差异的行。 2。
所以期望返回这些数组值:
[1,2,2]
[4,5,4]
[7,8,18]
我尝试使用shift函数实现此功能:
df2[(df2.A - df2.shift(1).A >= 2)]
结果是:
A B C
1 4 5 4
2 7 8 18
我认为需要对每一行应用函数才能实现这个目标吗?
更新:
替代用例:
columns = ['A','B', 'C']
data = np.array([[1,2,2] , [2,5,3], [7,8,16]])
df2 = pd.DataFrame(data,columns=columns)
df2[df2.A.diff().shift(-1) >= 2]
返回的是:
A B C
1 2 5 3
但期待
A B C
1 2 5 3
1 7 8 16
所以在这种情况下,期望下一行和当前行返回为2&amp;之间的差异。 8英寸
2 5 3
&amp; 8 8 18
是&gt; 2
更新2:
边缘情况:如果要比较的最后一个值是&lt; 2然后忽略该行
columns = ['A','B', 'C']
data = np.array([[2,2,2] , [3,5,3], [5,8,16], [6,8,16]])
df2 = pd.DataFrame(data,columns=columns)
df2[df2.A.diff().shift(-1).ffill() >= 2]
返回:
A B C
1 3 5 3