我试图在我的数据集中的某列中找到所有值的平均值。我做了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()
答案 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)
如果您希望列实际更改。