选择行的最快的方法不是遍历行。而是,创建一个mask(即,布尔数组),然后调用df[mask]选择。 这里有一个问题:如何动态表示dataframe中的当前行、前一行?答案是用shift。 shift(0):当前行 shift(1):前一行 shift(n):往前第n行
若要满足多个条件 逻辑与&: mask = ((...) & (...))
逻辑或|: mask = ((...) | (...))
逻辑非~:
mask = ~(...)
In [75]: df = pd.DataFrame({'A':range(5), 'B':range(10,20,2)}) In [76]: df Out[76]: A B 0 0 10 1 1 12 2 2 14 3 3 16 4 4 18 In [77]: mask = (df['A'].shift(1) + df['B'].shift(2) > 12) In [78]: mask Out[78]: 0 False 1 False 2 False 3 True 4 True dtype: bool In [79]: df[mask] Out[79]: A B 3 3 16 4 4 18