Considérez la série suivante qui représente la distance entre l'emplacement a et les emplacements b, c, d:

   a   
a  0

b  10

c  12

d  21

Maintenant, ce que j'essaye de faire est de récupérer tous les noms d'emplacement qui sont à une certaine distance de a.

Par exemple, je voudrais imprimer toutes les variables qui sont à moins de 15 unités de distance de a, à l'exclusion de a, qui seraient b et c.

b

c

J'ai essayé de créer une liste vide, puis d'utiliser une boucle for pour l'ajouter à cette liste, mais en vain, il me manque donc manifestement quelque chose.

0
grimrol123 1 juin 2020 à 16:00

3 réponses

Meilleure réponse

Essaye ça:

dist = 15
val = list(df.loc[(df['a'] < dist) & (df.index != 'a')].index)
print(val)

Production:

['b', 'c']
0
Anshul 1 juin 2020 à 13:21

Vous pouvez le faire, j'ai supposé que la première colonne était un index:

print(df[(df['a'] < 15) & (df.index != 'a')])

      a
loc
b    10
c    12
0
NYC Coder 1 juin 2020 à 13:18

Oubliez les boucles, les pandas et numpy ont déjà des fonctions intégrées qui font le travail. Dans ce cas, vous pouvez utiliser np.where.

import pandas as pd
import numpy as np
df = pd.Series({'a':0, 'b':10, 'c':12, 'd':21}, index=['a', 'b', 'c', 'd'])
df.iloc[np.where((df<=15) & (df.index !='a'))]
1
marz 1 juin 2020 à 13:18