我正在尝试在数据框中找到价格数据的总和。 我当前的代码如下所示,必须有更好的方法
i=5
a = 0
while i<10
a = a + df.loc[i]["Price"]
i = i + 1
averg = a/5
print(averg)
答案 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级循环。