it-swarm.com.de

Wie erhält man den Durchschnitt der Datenrahmen-Spaltenwerte?

                    A        B
DATE                 
2013-05-01        473077    71333
2013-05-02         35131    62441
2013-05-03           727    27381
2013-05-04           481     1206
2013-05-05           226     1733
2013-05-06           NaN     4064
2013-05-07           NaN    41151
2013-05-08           NaN     8144
2013-05-09           NaN       23
2013-05-10           NaN       10

sagen wir, ich habe den Datenrahmen oben. Was ist der einfachste Weg, um eine Reihe mit demselben Index zu erhalten, der der Durchschnitt der Spalten A und B ist? Der Durchschnitt muss die NaN-Werte ignorieren. Der Clou dabei ist, dass diese Lösung flexibel sein muss, um dem Datenrahmen neue Spalten hinzuzufügen.

das nächste, das ich gekommen bin, war

df.sum(axis=1) / len(df.columns)

dies scheint jedoch die NaN-Werte nicht zu ignorieren

(Anmerkung: Ich bin immer noch ein bisschen neu in der pandas Bibliothek, daher schätze ich, dass es einen offensichtlichen Weg gibt, dies zu tun, den mein begrenztes Gehirn einfach nicht sieht.)

26
badideas

Durch einfaches Verwenden von df.mean() wird in Bezug auf NaNs das Richtige getan:

>>> df
                 A      B
DATE                     
2013-05-01  473077  71333
2013-05-02   35131  62441
2013-05-03     727  27381
2013-05-04     481   1206
2013-05-05     226   1733
2013-05-06     NaN   4064
2013-05-07     NaN  41151
2013-05-08     NaN   8144
2013-05-09     NaN     23
2013-05-10     NaN     10
>>> df.mean(axis=1)
DATE
2013-05-01    272205.0
2013-05-02     48786.0
2013-05-03     14054.0
2013-05-04       843.5
2013-05-05       979.5
2013-05-06      4064.0
2013-05-07     41151.0
2013-05-08      8144.0
2013-05-09        23.0
2013-05-10        10.0
dtype: float64

Sie können df[["A", "B"]].mean(axis=1) verwenden, wenn andere Spalten zu ignorieren sind.

60
DSM