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
4

1 回答 1

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

您可以将strs 列转换为intswith列

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

但是,当然,处理此问题的最佳方法是确保首先使用正确的 ( int) 值构造 DataFrame。

于 2013-10-11T12:45:22.743 回答