如何在列的最后300行之间进行迭代

时间:2018-11-28 11:39:52

标签: python-3.x pandas dataframe

x = pd.read_csv(filename)

if abs(x["b"].values[-1] - x["a"].values[-300]) <= 2:
    print('less than')
    x1=x.iloc[-300:]

**这段代码计算行-300和-1之间的差异,它工作正常,但是如果行号-300和-1之间的差异大于2,我想添加更多条件,我想检查一下行编号-299和-2,然后对-298和-2执行此操作,每次更改十次,每次更改一个点,如果相差小于2,则停止处理并在这两个点之间切割数据片段,如果找不到小于2的差异,然后打印条件找不到**

如果有人有个好主意,请在这里分享。

1 个答案:

答案 0 :(得分:0)

这应该是它:

i, j = -1, -300

for _ in range(1, 11):
    if abs(x["b"].values[i] - x["a"].values[j]) <= 2:
        print('less than')
        x1 = x.iloc[j:]
        break
    i -= -1
    j += 1
else:
    pass
    # here you can write what happens if condition is not met

这里是一个例子:

import pandas as pd

i, j = -1, -5

x = pd.DataFrame({'a': range(0, 20, 2),
                  'b': [16]*10})

for _ in range(1, 6):
    print abs(x["b"].values[i] - x["a"].values[j])
    if abs(x["b"].values[i] - x["a"].values[j]) <= 2:
        print('less than')
        x1 = x.iloc[j:]
        break
    i -= -1
    j += 1
else:
    pass

x1
#    a   b
#7  14  16
#8  16  16
#9  18  16