Python 如何获得dataframe列值的平均值
假设我有上面的数据框。获取具有相同索引(即a列和B列的平均值)的序列的最简单方法是什么?平均值需要忽略NaN值。问题在于,该解决方案需要灵活地向数据帧添加新列 最近的一次是Python 如何获得dataframe列值的平均值,python,pandas,dataframe,Python,Pandas,Dataframe,假设我有上面的数据框。获取具有相同索引(即a列和B列的平均值)的序列的最简单方法是什么?平均值需要忽略NaN值。问题在于,该解决方案需要灵活地向数据帧添加新列 最近的一次是 A B DATE 2013-05-01 473077 71333 2013-05-02 35131 62441 2013-05-03 727 27381 2013-05-
A B
DATE
2013-05-01 473077 71333
2013-05-02 35131 62441
2013-05-03 727 27381
2013-05-04 481 1206
2013-05-05 226 1733
2013-05-06 NaN 4064
2013-05-07 NaN 41151
2013-05-08 NaN 8144
2013-05-09 NaN 23
2013-05-10 NaN 10
但是,这似乎并没有忽略NaN值
(注意:我对熊猫图书馆还是有点陌生,所以我猜有一种明显的方法可以做到这一点,而我有限的大脑根本看不见)简单地使用df.mean()
将对NaNs做正确的事情(tm):
df.sum(axis=1) / len(df.columns)
如果还有其他列可以忽略,你可以使用
df[[“A”,“B”]].mean(axis=1)
。阅读感谢Rachel,我很感激我必须使用df.mean(axis=1)才能正确,但感谢你让我走上正确的轨道。我想今天早上我还需要两三杯咖啡@扎菲德:嗯?这就是我上面写的。[哦,你的意思是在第一行,而不是在示例中。我在这里讨论了df.mean
w.r.t.NaNs的行为,但我可以看出这会有多混乱。]但是mean()不是计算中位数吗?这与平均水平不同。
>>> df
A B
DATE
2013-05-01 473077 71333
2013-05-02 35131 62441
2013-05-03 727 27381
2013-05-04 481 1206
2013-05-05 226 1733
2013-05-06 NaN 4064
2013-05-07 NaN 41151
2013-05-08 NaN 8144
2013-05-09 NaN 23
2013-05-10 NaN 10
>>> df.mean(axis=1)
DATE
2013-05-01 272205.0
2013-05-02 48786.0
2013-05-03 14054.0
2013-05-04 843.5
2013-05-05 979.5
2013-05-06 4064.0
2013-05-07 41151.0
2013-05-08 8144.0
2013-05-09 23.0
2013-05-10 10.0
dtype: float64