我使用pandas 0.13.1。这个数据框:
a = pandas.DataFrame({"a": ["foo", "bar", "qux"], "v": [1, 5.6, 50.5]})
a = a.set_index("a")
包含浮点数,其平均值可以使用.mean()
计算:
>>> a.mean()
v 19.033333
dtype: float64
>>> type(a.mean())
pandas.core.series.Series
但是在pandas 0.13.1中,这个结果是Series
而不是float
- 为什么会这样?这是熊猫新的吗? IIRC在老熊猫中不是这样的。
这是获得浮动的正确方法吗?
>>> a.mean()[0]
答案 0 :(得分:1)
如果您有多列,则df.mean()
中的系列包含每列的值。所以a.mean()['v']
(得到平均系列的'v'值)或a['v'].mean()
(取系列'v'的平均值)将是表达你正在做的事情的最清晰方式。
如果您希望将数据视为单个矢量/数组(即任何会强制您的数据只有一列的构造),则表示该数据的首选方式是系列。
或者,如果您想要所有列的平均值,您可以这样做:
df.mean().mean()
(取每列的平均值,然后给出其平均值)df.mean(axis=0).mean()
(取每行的平均值,然后给出其平均值)df.as_matrix().mean()
(取整个矩阵的平均值[由熊猫作为numpy矩阵/ 2D数组返回])df.values.mean()
(与上面相同,可能会更快但有点不太清楚[pandas作为numpy数组的内部表示])