根据值的趋势筛选 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
但是,您需要更准确地理解趋势的含义。
我在 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
但是,您需要更准确地理解趋势的含义。