2017-06-08 1 views
1

Ich habe ein PD-Datenframe mit einer Spalte von 15000 Werten. Ich habe eine andere Textdatei (also Array oder Dataframe) mit 400 Werten. Meine Aufgabe ist es, zu überprüfen, wie viele Werte von diesen 400 größer als das Element der Spalte in meinem Datenrahmen sind.Panda Dataframe Element Vergleich gegen eine Liste von Werten

I.e. Ich brauche als Ausgabe eine Spalte len = 15000 mit Werten von 0-400.

Jeder nette Weg, dies zu tun?

(df.col.values[:,None] < arr400).sum(axis=1) 

-/

Dank

Antwort

0

Mit 'col' als Spaltenüberschrift und arr400 als die Anordnung von 400 Elemente, wäre ein Ansatz NumPy broadcasting zu verwenden sein, For-Schleife Niederlagen der Zweck der Verwendung von Datenrahmen möglicherweise wäre schneller Einsatz np.count_nonzero -

np.count_nonzero(df.col.values[:,None] < arr400, axis=1) 

Probelauf -

In [246]: df 
Out[246]: 
    col 
0 7 
1 2 
2 6 
3 0 
4 8 
5 1 
6 6 
7 3 
8 1 
9 1 

In [247]: arr400 
Out[247]: array([2, 2, 8, 7]) 

In [248]: (df.col.values[:,None] < arr400).sum(axis=1) 
Out[248]: array([1, 2, 2, 4, 0, 4, 2, 2, 4, 4]) 

In [249]: np.count_nonzero(df.col.values[:,None] < arr400, axis=1) 
Out[249]: array([1, 2, 2, 4, 0, 4, 2, 2, 4, 4]) 
+0

Danke, wirkt wie ein Zauber –

+0

@GedasSarpis froh, endlich das Feedback zu bekommen! :) – Divakar

Verwandte Themen