2013-05-22 16 views
23
    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, ich habe den Datenrahmen oben. Was ist der einfachste Weg, um eine Serie mit demselben Index zu erhalten, der der Durchschnitt der Spalten A und B ist? Der Durchschnitt muss die NaN-Werte ignorieren. Der Clou ist, dass diese Lösung flexibel sein muss, um dem Datenrahmen neue Spalten hinzuzufügen.wie man den Durchschnitt von Datenrahmenspaltenwerten erhält

in der Nähe Ich bin gekommen war

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

aber dies scheint nicht die NaN-Werte

(Anmerkung zu ignorieren: Ich bin immer noch ein bisschen neu in der Pandas Bibliothek, also bin ich erraten es offensichtlich, dass die Art und Weise ist zu tun, ist dies, dass mein Gehirn beschränkt einfach nicht zu sehen)

+2

LESEN http://pandas.pydata.org/pandas-docs/dev/missing_data.html –

+0

danke Rachel, ich weiß es zu schätzen – badideas

Antwort

54

einfach df.mean() verwendet, wird das Richtige tun (tm) in Bezug auf NaNs:

>>> 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.

+1

ich musste tun df.mean (Achse = 1), um es richtig zu machen, aber danke um mich auf die richtige Spur zu bringen. Ich denke, ich brauche heute Morgen noch zwei oder drei Kaffees. :) – badideas

+1

@zaphod: huh? Das habe ich oben geschrieben. [Oh, du meinst in der ersten Zeile, nicht im Beispiel. Dort habe ich über das Verhalten von 'df.mean' w.r.t gesprochen. NaNs, aber ich kann sehen, wie das wäre verwirrend.] – DSM

+0

hehe, ich bin dran, meine drei Kaffee jetzt zu bekommen :) danke nochmal – badideas

Verwandte Themen