根据值的趋势筛选 pandas 行

Filter pandas rows based on trend in values

我在 pandas 中有以下 table:

Client Evol_2019 Evol_2020 Evol_2021
Juice Factory 0 1 -1
Food Factory -1 0 -2
Cloth Factory 2 0 0

我想只显示多年来观察到趋势的行,也就是说在其演变过程中具有多个负值或正值的行。在这种情况下,只会显示 Food Factory

我没有找到任何满足此要求的条件,知道吗?

假设您的“趋势”是所有值都小于或等于零,您可以这样做:

df = df[(df <= 0).all(1)]

考虑这个例子

import pandas as pd
df = pd.DataFrame(np.random.randn(10, 3))

   0         1         2
0 -0.888926  0.058545 -1.256491
1  0.477024 -2.519239 -0.110326
2  1.884556  0.714018  0.977505
3  0.132514 -1.374656 -0.727327
4  0.219045  0.354403 -0.183413
5  0.343402 -0.302415 -0.372308
6 -0.699375 -0.492723  0.694994
7  1.460814 -0.294340 -1.305795
8 -0.177625  0.499749  0.001147
9 -0.575742 -0.148443 -1.766909

然后

df[(df <= 0).all(1)

     0         1         2
9 -0.575742 -0.148443 -1.766909

但是,您需要更准确地理解趋势的含义。