在数据框列中获取平均值,而无需使用while循环

时间:2018-10-06 11:40:10

标签: python pandas

我正在尝试在数据框中找到价格数据的总和。 我当前的代码如下所示,必须有更好的方法

i=5
a = 0
while i<10
    a = a + df.loc[i]["Price"]
    i = i + 1
averg = a/5
print(averg)

3 个答案:

答案 0 :(得分:0)

在数据帧上使用循环效率很低。尽可能尝试使用向量计算。熊猫已经具有相同的功能mean()
如果该列的索引为“价格”,则可以执行以下操作-
df['Price'].mean()

答案 1 :(得分:0)

>>> import pandas as pd

>>> df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]], columns=["Price", "Weight", "Size"])
>>> df
   Price  Weight  Size
0      1       2     3
1      4       5     6
2      7       8     9

>>> df.mean()
Price     4
Weight    5
Size      6
dtype: int64

>>> df["Price"].mean()
4

答案 2 :(得分:0)

首先注意,您应该避免链接索引。它是模糊的,在文档中为explicitly discouraged,而您可以使用pd.DataFrame.at。另外,您可以使用+=运算符来增加值。因此,您可以将其重写为:

i = 5
a = 0
while i < 10
    a += df.at[i, 'Price']
    i += 1
avg = a/5
print(avg)

但是,请注意,您可以使用pd.DataFrame.loc组合行和索引标签,并提供一个pd.Series对象。然后,您可以使用pd.Series.mean来计算平均值:

avg = df.loc[5:10, 'Price'].mean()

通过这种方式,您还可以利用矢量化计算,而不是使用Python级循环。