[FIXED] Zählen, wie viele Zeilen die sich ändernde Bedingung erfüllen

Ausgabe

Ich versuche zu zählen, wie viele Zeilen eine bestimmte Bedingung erfüllen, aber ich möchte, dass sich diese Bedingung nach jeder Neuberechnung ändert. Beispieldaten habe ich:

data={'ID':['1','2','3','4'],'X':[23,22,21,24],'Y':[44,45,41,46],'X_MIN':[22,21,20,23],'Y_MIN':[43,44,40,45]}
ICH WÜRDE X Y X_MIN Y_MIN
1 23 44 22 43
2 22 45 21 44
3 21 41 20 40
4 24 46 23 45

Dies ist die ID des Geschäfts und seine Koordinaten. Ich möchte überprüfen, wie viele Geschäfte sich unter einem einzelnen Geschäft befinden. Also muss ich der gesamten Datenbank das Minimum X und Y jedes Speichers zuweisen und prüfen, wo X>=X_MIN und Y>=Y_MIN. Ich habe versucht, eine Schleife zu erstellen, die einen neuen Datenrahmen erstellt und alle X_MIN und Y_MIN durch konstante Werte aus der ersten Zeile meiner Daten ersetzt. Dann wollte ich filtern, wie viele Fälle die Bedingung erfüllen, sie zählen und der Liste hinzufügen. Und auf diese Weise wiederholen Sie die Aktion, indem Sie über die Zeilen iterieren. Was ich getan habe, ist unten:

test=df
calc=[]

for i, row in df.iterrows():
    test['X_MIN']=row['X_MIN']
    test['Y_MIN']=row['Y_MIN']
    count=test[['X','Y','X_MIN','Y_MIN']].query('X>=X_MIN and Y>=Y_MIN')
    a=count['X'].count()
    calc.append(a)

Ich möchte zu einer Beispieltabelle kommen:

final={'ID':['1','2','3','4'],'count':[3,3,4,1]}
ICH WÜRDE zählen
1 3
2 3
3 4
4 1

Der Befehl zählt jedoch endlos. Ich bitte um Hilfe bei der Lösung dieses Problems.

Lösung

Vielleicht ist dieser Code das, wonach Sie suchen. Es generiert eine Spalte, countin der Sie für jede IDdie Anzahl anderer IDs haben, die beide Xund Ygrößer oder gleich als sie selbst haben

import pandas as pd

data= pd.DataFrame({'ID':['1','2','3','4'],'X':[23,22,21,24],'Y':[44,45,41,46]})


data['count'] = data.apply(lambda x: len(data[(data['X'] >= x['X'])&(data['Y'] >= x['Y'])]),axis=1)


Beantwortet von –
imburningbabe


Antwort geprüft von –
Senaida (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like