comme un suivi de Ma question précédente Sur le sujet
suppose le Dataframe suivant: p> Je voudrais faire un calcul entre toutes les lignes à toutes les autres lignes.
Par exemple, si le calcul était Lambda R1, R2: ABS (R1-R2) CODE>, puis un moyen de former une sortie serait P> id id2 out
1 2 10
1 3 200
1 4 3000
2 1 10
2 3 190
2 4 2990
3 1 200
3 2 190
3 4 2800
4 1 3000
4 2 2990
4 3 2800
3 Réponses :
Nous pouvons aborder ce problème ce qui suit:
Définissez toutes les combinaisons avec fusionner nos valeurs à nos combinaisons p> li>
Calculez notre itheroTools.Production code>. p> li>
out code> colonne p> li>
OL> id id2 A A_2 out
1 2 1 10 0 10
2 3 1 200 0 200
3 4 1 3000 0 3000
4 1 2 0 10 10
6 3 2 200 10 190
7 4 2 3000 10 2990
8 1 3 0 200 200
9 2 3 10 200 190
11 4 3 3000 200 2800
12 1 4 0 3000 3000
13 2 4 10 3000 2990
14 3 4 200 3000 2800
Ah Oke, attendant la réponse de l'OP puis @ anky_91
Définir le Dataframe d'origine:
df_joined['result'] = abs(df_joined['A'] - df_joined['A_r'])
A A_r result
id_r id
1 2 10 0 10
3 200 0 200
4 3000 0 3000
2 1 0 10 10
3 200 10 190
4 3000 10 2990
3 1 0 200 200
2 10 200 190
4 3000 200 2800
4 1 0 3000 3000
2 10 3000 2990
3 200 3000 2800
Est-ce ce dont vous avez besoin? ou P>
s=pd.DataFrame(abs(df.A.values[:,None]-df.A.values),index=df.id,columns=df.id).astype(float)
s.values[[np.arange(len(s))]*2]=np.nan
s.stack()
id id
1 2 10.0
3 200.0
4 3000.0
2 1 10.0
3 190.0
4 2990.0
3 1 200.0
2 190.0
4 2800.0
4 1 3000.0
2 2990.0
3 2800.0
dtype: float64
Je suppose que ce serait le code le plus court, mais je voudrais 0 code> et 1 code> pour faire partie d'un index multiple.
@Gulzar Ajouter une nouvelle méthode :-)
@Wenyoben aime toujours vos réponses!
Vous avez commenté dans votre question originale que votre cas d'utilisation réelle
Calcule toutes les distances entre une liste de points 3D [donnée sous forme de 6 colonnes en entrée] code>. Que comptez-vous faire avec ces distances? Si vous avez besoin de trouver le voisin le plus proche de chaque point, ou des voisins les plus proches les plus proches, etc., vous souhaiterez peut-être examiner la structure de données de l'arborescence KD, qui a des implémentations dans Scikit-apprendre ( scikit-learn.org/stable/modules/generated/.../a>) et scipy ( docs.cipy.org/doc/scipy/reference/generated/... a>). Chemin plus rapide et efficace de la mémoire. @Peterleimbigler Je devrai faire une analyse qui n'est pas encore claire. J'aurai probablement besoin d'interroger "toutes les distances pour lesquelles leurs points d'orinage répondent à un prédicat". Je n'aurai pas besoin de Knn. Probablement.