J'ai 3 dataframes pandas à colonnes multiindex.
cadre de données 1 (valeur minimale) :
| A | B | C |
| Min | Min | Min |
|-------|-------|------|
0 | 26.47 | 17.31 | 1.26 |
1 | 27.23 | 14.38 | 1.36 |
2 | 27.23 | 18.88 | 1.28 |
dataframe 2 (valeur utilisée pour la comparaison)
La ligne 0, la ligne 1 et la ligne 2 sont les mêmes, j'étend le cadre de données à trois lignes pour la comparaison avec les cadres de données min et max. La valeur dans chaque cellule du dataframe est un tableau de données.
| A | B | C |
| Val | Val | Val |
|---------------------|-----------------------|--------------------|
0 | [27.58,28.37,28.73] | [17.31, 18.42, 18.72] | [1.36, 1.28, 1.27] |
1 | [27.58,28.37,28.73] | [17.31, 18.42, 18.72] | [1.36, 1.28, 1.27] |
2 | [27.58,28.37,28.73] | [17.31, 18.42, 18.72] | [1.36, 1.28, 1.27] |
cadre de données 3 (valeur maximale) :
| A | B | C |
| Max | Max | Max |
|-------|-------|------|
0 | 28.68 | 18.42 | 1.37 |
1 | 29.50 | 17.31 | 1.47 |
2 | 29.87 | 20.45 | 1.39 |
Résultat escompté :
| A | B | C |
| Result | Result | Result |
|---------------------|-----------------------|----------------------|
0 | [True, True, False] | [True, True, False] | [True, True, True] |
1 | [True, True, True] | [True, False, False] | [True, False, False] |
2 | [True, True, True] | [False, False, False] | [True, True, False] |
J'aimerais effectuer une comparaison par éléments de cette manière :
min <= each element in ndarray <= max
i.e
for row 0:
26.47 <= [27.58,28.37,28.73] <= 28.68
17.31 <= [17.31, 18.42, 18.72] <= 18.42
1.26 <= [1.36, 1.28, 1.27] <= 1.37
et ainsi de suite
J'ai essayé ( datafram2 >= dataframe3 ) & ( datafram2 <= datafram3 )
mais pas le travail.
Quel est le moyen le plus simple et le plus rapide de calculer le résultat ?
Exemple de code de dataframe :
min_columns = pd.MultiIndex.from_product( [ [ 'A', 'B', 'C' ], [ 'Min' ] ] )
val_columns = pd.MultiIndex.from_product( [ [ 'A', 'B', 'C' ], [ 'Val' ] ] )
max_columns = pd.MultiIndex.from_product( [ [ 'A', 'B', 'C' ], [ 'Max' ] ] )
min_df = pd.DataFrame( [ [ 26.47, 17.31, 1.26 ], [ 27.23, 14.38, 1.36 ], [ 27.23, 18.88, 1.28 ] ], columns=min_columns )
val_df = pd.DataFrame( [ [ [ 27.58, 28.37, 28.73 ], [ 17.31, 18.42, 18.72], [1.36, 1.28, 1.27 ] ] ] , columns=val_columns )
max_df = pd.DataFrame( [ [ 28.68, 18.42, 1.37 ], [ 29.50, 17.31, 1.47 ], [ 29.87, 20.45, 1.39 ] ] , columns=max_columns )