2017-01-11 1 views
0

Image of datasetWie der Mittelwert einer Spalte von zehn Jahren in Python berechnen

Ich bin nicht sicher, wie die Mittel für eine Spalte berechnen bestimmte Zeilen angegeben. Ich muss den Mittelwert der Spalte Mkt-RF nach Dekade berechnen, wie in der Mitte von 193001 bis 193912, und so weiter. Ich muss dies für jedes Jahrzehnt bis 2016 tun.

Gibt es auch eine Möglichkeit, die Ergebnisse in einen neuen eigenen Datenrahmen zu bringen? Mit dem Jahrzehnt (1920,1930) in einer Kolumne und dem Durchschnitt jeder Dekade in der anderen?

Antwort

0

Ich glaube, Sie brauchen groupby durch erste 3 Zeichen der ersten Spalte von str[:3] mit mean:

df = df['Mkt-RF'].groupby(df['Unnamed:0'].str[:3]).mean() 

Probe:

df = pd.DataFrame({'Unnamed:0':['192607','192608','193609','193610','193611'], 
        'Mkt-RF':[4,5,6,7,5]}) 
print (df) 
    Mkt-RF Unnamed:0 
0  4 192607 
1  5 192608 
2  6 193609 
3  7 193610 
4  5 193611 

#rename column 
df = df.rename(columns={'Unnamed:0':'YEARMONTH'}) 

df = df['Mkt-RF'].groupby(df.YEARMONTH.str[:3]).mean().rename('MEAN').reset_index() 
df.YEARMONTH = (df.YEARMONTH + '0').astype(int) 
print (df) 
    YEARMONTH MEAN 
0  1920 4.5 
1  1930 6.0 

Eine andere Lösung konvertieren zunächst to_datetime und groupby durch year Boden geteilt durch 10:

df = df.rename(columns={'Unnamed:0':'YEARMONTH'}) 

df.YEARMONTH = pd.to_datetime(df.YEARMONTH, format='%Y%m') 
df = df['Mkt-RF'].groupby(df.YEARMONTH.dt.year // 10).mean().rename('MEAN').reset_index() 
df.YEARMONTH = df.YEARMONTH *10 
print (df) 
    YEARMONTH MEAN 
0  1920 4.5 
1  1930 6.0 
+0

Gibt es diesen Fehler für mich zurück? "Kann nur den .str-Accessor mit String-Werten verwenden, die np.object_dtype in Pandas verwenden" Nicht sicher, was es bedeutet. –

+0

Es meenas erste Spalte ist keine Zeichenfolge. So können Sie 'df = df ['Mkt-RF'] .groupby (df ['Unbenannt: 0']. Astype (str) .str [: 3]). Mean()' oder zweite Lösung verwenden. – jezrael

+1

und kleiner Hinweis - Leute von 'StackOverflow' hassen Bilder statt Text, weil Text nicht kopiert werden kann. Also bekommst du Downvote (s). Auch diese [Antworten] (http://stackoverflow.com/questions/20109391/how-to-make-good-reproducible-pandas-examples) kann helfen, wie man nette Pandabärenfrage erstellt. – jezrael

Verwandte Themen