2016-05-03 4 views
0

Ich muss alle Einträge finden, die innerhalb eines bestimmten Intervalls (Fehler) voneinander für jede Spalte eines Pandas DataFrame enthalten sind (und gruppieren sie nach Index). Beispiel für ein Intervall +/- 0.2:Finden Sie alle Einträge in einem bestimmten Intervall voneinander in Pandas

myDataFrame: 
    A B C 
0 1.1 1.3 1.5 
1 0.7 0.1 -0.5 
2 1.2 1.9 1.3 
3 0.1 0.0 -0.3 
4 0.2 0.1 -0.1 

Das Ergebnis wäre:

Spalte A: {0,2}, {3,4}

Spalte B: {1,3,4}

Spalte C: {0,2}, {1,3}, {3,4}

Ist das möglich? Ich weiß, dass ich mehrere für Schleifen ausführen konnte, um jede Zeile und Spalte zu iterieren, ich fragte mich nur, ob es eine Möglichkeit gibt, dies mit Pandas zu tun, weil es viel schneller wäre. Danke

Antwort

0

Sie können Pandas Schnittfunktion verwenden, um die Variablen zu stopfen.

import pandas as pd  
df.loc[:, 'C_bins'] = pd.cut(df.C, bins=[.2*x for x in range(-10, 10)]) 

ergibt

 A B C  C_bins 
0 1.1 1.3 1.5 (1.4, 1.6] 
1 0.7 0.1 -0.5 (-0.6, -0.4] 
2 1.2 1.9 1.3 (1.2, 1.4] 
3 0.1 0.0 -0.3 (-0.4, -0.2] 
4 0.2 0.1 -0.1  (-0.2, 0] 

Von dort können Sie gruppieren sie mit groupby oder zählen sie mit value_counts

Verwandte Themen