2013-10-11 90 views
4

我有一個數據框,並希望得到其中一列的值的平均值。如果我做的:什麼是熊貓數據框中的平均值的定義?

print df['col_name'][0:1] 
print df['col_name'][0:1].mean() 

我得到:

0 2 
Name: col_name 
2.0 

如果我做的:

print df['col_name'][0:2] 
print df['col_name'][0:2].mean() 

我得到:

0 2 
1 1 
Name: col_name 
10.5 

如果我做的:

print df['col_name'][0:3] 
print df['col_name'][0:3].mean() 

我得到:

0 2 
1 1 
2 2 
Name: col_name 
70.6666666667 
+0

可能想看http://pandas.pydata.org/pandas-docs/dev/generated/pandas.DataFrame.mean.html?highlight=mean#pandas.DataFrame.mean – aIKid

回答

3

看起來你有str值的列,而不是ints

import pandas as pd 
df = pd.DataFrame({'col':['2','1','2']}) 
for i in range(1,4): 
    print(df['col'][0:i].mean()) 

產生

2.0 
10.5 
70.6666666667 

而如果值是ints

df = pd.DataFrame({'col':[2,1,2]}) 
for i in range(1,4): 
    print(df['col'][0:i].mean()) 

產生

2.0 
1.5 
1.66666666667 

您可以將您的str專欄轉換的ints列與

df['col'] = df['col'].map(int) 

但是,當然,處理這種最好的方式是請確保DataFrame首先以正確的值(int)構建。

+0

哦,好悲傷,因爲' 10.5 == float(「2」+「1」)/ 2'。我甚至沒有看到看到,因爲我認爲它會提高。 – DSM

+0

呵呵。我很高興你知道這些數字來自哪裏。嘿,那是你的多態性! :) – unutbu