2017-11-27 4 views
2

ich einen Datenrahmen df haben wie folgt:Mittelwert jeder Spalte von mehreren Datenrahmen zu einem Datenrahmen - Python Pandas

A B C 
1 2 3 
2 1 2 
3 3 1 

Und ich würde den Mittelwert jeder Spalte mögen und einen Datenrahmen mit ihm machen. dass in diesem Beispiel wäre:

A B C 
2 2 2 

Der Code, den ich tat, war:

import pandas as pd 
import numpy as np 
df = pd.DataFrame(np.random.randn(10, 3), columns=list('ABC')) # To create df 
dfs = np.array_split(df.sample(frac=1),4) # Split it in 4 
daf = [] 
for i in range(len(dfs): 
    daf.append(dfs[i].mean()) 
daf.to_frame() 

Allerdings bin ich nicht in der Lage, es Arbeit zu machen.

Antwort

1

Verwenden mean, sondern weil es Series Verwendung to_frame zurückkehren und transponiert:

df = df.mean().to_frame().T 
print (df) 
    A B C 
0 2.0 2.0 2.0 

Oder:

df = pd.DataFrame([df.mean()]) 
print (df) 
    A B C 
0 2.0 2.0 2.0 

Für mehr DataFrames:

daf = [] 
for i in dfs: 
    daf.append(i.mean().to_frame().T) 

print (daf[0]) 
     A   B  C 
0 -0.92493 1.022305 1.52295 

was ist die gleiche wie list comprehension Lösung :

daf = [i.mean().to_frame().T for i in dfs] 
+0

Wenn es mehrere Datenrahmen ist, wie kann ich es tun? –

0

die Methode des Datenrahmens, "anwenden" wird gut sein. der Code ist unten.

import pandas as pd 
import numpy as np 
df = pd.DataFrame(np.random.randn(10, 3), columns=list('ABC')) # To create df 
df.apply(lambda x: np.mean(x), axis=0) 
Verwandte Themen