Pandas .mean()用于列

时间:2018-09-12 17:33:09

标签: python pandas jupyter-notebook

我试图在我的数据集中的某列中找到所有值的平均值。我做了df [“ column”]。mean(),但这给了我一个荒谬的数字,考虑到我的价值观有多小,这是没有意义的。 min()和max()函数可以正常工作。

Here is what I'm talking about.

为澄清起见,第一个单元格中输出的左侧是索引,右侧是值。

delay["If Delayed, for how long?"].astype(int)

print(delay["If Delayed, for how long?"].min())
print(delay["If Delayed, for how long?"].max())
print(delay["If Delayed, for how long?"].mean()

1 个答案:

答案 0 :(得分:5)

可能熊猫应该拒绝采用字符串列的均值。但事实并非如此,所以您得到的是:

In [154]: s = pd.Series([15,18,16,14,20,16,15]).astype(str)

In [155]: s.sum()
Out[155]: '15181614201615'

In [156]: float(s.sum()) / len(s)
Out[156]: 2168802028802.1428

In [157]: s.mean()
Out[157]: 2168802028802.1428

s.min()s.max()将“起作用”,但这是字典编排的最大值和最小值,而不是数字,因此'111'<'20'。

使列数值(无论是int还是float)都更合适,请记住.astype不能就地工作,所以您需要

delay["If Delayed, for how long?"] = delay["If Delayed, for how long?"].astype(int)

如果您希望列实际更改。