有没有更好的方法来计算pandas DataFrame中行的平均值?

时间:2017-03-20 13:21:25

标签: python pandas

我有一个带有" n" 行和" m" 列的DataFrame,我想要第一行行和 m-1 列。

              c1        c2        c3   . . . . . . . cm
r1
r2
r3
.
.
.
.
rn

我正在对整个第一行求和,减去与该行对应的最后一列值,然后对其求平均值。代码如下所示:

    (sum(df.ix["r1",:]) - df.ix["r1",'cm'])/(len(df.columns)-1)

你会建议另一种方法来实现我的目标吗?

3 个答案:

答案 0 :(得分:2)

我相信

之类的东西
df[df.columns[:-1]].mean(axis=1)
如果你有这种扁平的数据帧结构,那么

就可以解决问题。

此处,df.columns[:-1]返回一个指向除最后一列之外的所有列的索引。

UPD 请原谅,这将给你计算所有行,你仍然需要选择你想要的那一行(第一个)

答案 1 :(得分:1)

你可以这样使用df.iloc[0][:-1].mean()

df =pd.DataFrame({'a':[1,2,3],'b':[4,5,6],'c':[7,8,9]}) 
df.iloc[0][:-1].mean()

答案 2 :(得分:1)

您可以iloc使用mean

print (df.iloc[:, :-1].mean(axis=1))

样品:

df = pd.DataFrame({'a':[1,2,3],'b':[2,2,3],
                   'c':[2,5,6]}, index=['r1','r2','r3'])

print (df)
    a  b  c
r1  1  2  2
r2  2  2  5
r3  3  3  6

print (df.iloc[:, :-1].mean(axis=1))
r1    1.5
r2    2.0
r3    3.0
dtype: float64