python pandas bedingte count über mehrere Spalten
Ich habe einen dataframe (die sogenannten panel - [xyz]) mit nur 1, 0 und -1. Die Maße sind: Zeilen, die mit 0:10 und die Spalten a:j.
Ich würde gern ein anderes dataframe (df), die die gleiche vertikale Achse, aber nur 3 Spalten:
col_1 = Anzahl aller nicht-null-Werte (1s und 1s)
col_2 = Anzahl aller 1en
col_3 = count all-1s
Fand ich das in der Suche SO:
HTML:
df[col_1] = (pan[xyz]['a','b','c','d','e'] > 0).count(axis=1)
...und haben versucht, viele verschiedene Iterationen, aber ich Schaffe es nicht, die bedingte (>0) zu unterscheiden zwischen den verschiedenen Werten im pan[xyz]. Die Anzahl ist immer = 5.
Jede Hilfe wäre sehr geschätzt werden.
Edit:
pan[xyz] =
HTML:
. 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j'
0 1 0 0 -1 0 0 -1 0 1 0
1 0 1 0 0 0 1 0 0 0 -1
2 1 0 0 0 0 -1 0 0 0 0
3 0 -1 0 0 0 0 0 1 0 0
4 0 0 0 1 0 0 -1 0 0 -1
df sein sollte =
HTML:
. col_1 col_2 col_3
0 4 2 2
1 3 2 1
2 2 1 1
3 2 1 1
4 3 1 2
Aber das ist es, was ich für col_1 :
HTML:
df = (panel[xyz] > 0).count(axis=1)
df
Out[129]:
0 10
1 10
2 10
3 10
4 10
dtype: int6
- Danke JohnE, gute Beratung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin nur tun dies mit einer flachen dataframe aber es ist das gleiche panel. Sie können eine von zwei Möglichkeiten. Der erste Weg ist, was Sie gemacht haben, ändern Sie einfach die
count()
zusum()
:Die zugrunde liegende Struktur ist boolean und True und False beiden gezählt, in der Erwägung, dass wenn Sie Summe Sie, es wird interpretiert mehr, wie Sie erwartet hatten, (0/1).
Aber ein standard-Weg, dies zu tun, es wäre so:
Während die frühere Methode basierte auf einem dataframe von booleans, die letztere sieht wie folgt aus:
In diesem Fall ist es eigentlich egal, welche Methode Sie verwenden, aber in der Regel letzteres wird besser sein, denn Sie können mehr tun mit ihm. Zum Beispiel mit der früheren Methode (die binären Ergebnisse von design), alles, was Sie wirklich tun können, ist zu zählen, aber in der letzteren Methode können Sie zählen, summieren, multiplizieren, etc.
Den potentiellen nutzen dieser möglicherweise mehr offensichtlich für den Fall der
df != 0
, wo es mehr als zwei mögliche Werte: