Ich versuche zu bekommen, die row
und column
Nummer, die erfüllt drei Bedingungen in Pandas Datenrahmen erfüllt.Getting die Zeilen- und Spaltennummern, die mehrere Bedingungen in Pandas
Ich habe einen Datenrahmen von 0
, 1
, -1
(größer als 1850
); wenn ich versuche, die row
zu bekommen und column
es dauert ewig, die Ausgabe zu erhalten.
Der folgende Text ist ein Beispiel, das ich habe zu verwenden versucht:
import pandas as pd
import numpy as np
a = pd.DataFrame(np.random.randint(2, size=(1845,1850)))
b = pd.DataFrame(np.random.randint(2, size=(5,1850)))
b[b == 1] = -1
c = pd.concat([a,b], ignore_index=True)
column_positive = []
row_positive = []
column_negative = []
row_negative = []
column_zero = []
row_zero = []
for column in range(0, c.shape[0]):
for row in range(0, c.shape[1]):
if c.iloc[column, row] == 1:
column_positive.append(column)
row_positive.append(row)
elif c.iloc[column, row] == -1:
column_negative.append(column)
row_negative.append(row)
else:
column_zero.append(column)
row_zero.append(row)
Ich habe einige Web-Suche und fand, dass np.where()
so etwas wie dies der Fall ist, aber ich habe keine Ahnung, wie es zu tun.
Könnte jemand eine bessere Alternative sagen?
Dank , @Divakar. Ich denke auch, dass Sie die Antwort mit 'np.column_stack (np.where (c.values == 1))' bearbeiten können. – Akshay
@akshay Oder einfach: 'np.argwhere (c_arr == 1)' usw. Das ist, was der zweite Ansatz mit 'np.argwhere' zu erreichen versucht. – Divakar
Stimmt, mein Schlechter. Danke trotzdem. – Akshay