For Loop确定加权平均python

时间:2016-08-05 00:11:20

标签: python pandas for-loop dataframe

我是Python的新手,并且无法为某种情况制作正确的for循环。

我的数据框dfclean包含两列:餐厅星级评分"Star_Rating"和评论总数"Review_Count"

我想查找这些星级评分的加权平均值(Star_Rating *(Review_Count /评论总数))并将其添加到名为"weightedavg"的新列中。

这是我到目前为止所做的以及我认为我每步所做的事情的注释:

#get total number of reviews
totalreviews = dfclean.Review_Count.sum()

#create empty list to append values to
weightedavg = []

#for loop
for row in range(len(dfclean)):
    weightedavg.append(dfclean.Star_Rating[row] * (dfclean.Review_Count[row] / totalreviews))

#make a new column in df consisting of weightedavg
dfclean['weightedavg'] = weightedavg

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:5)

你不应该使用for循环。您可以利用广播来执行以下操作:

var newCell = newRow.insertCell();
var button = document.createElement("input");
button.type = "image";
button.src = "/images/image.png";
button.setAttribute("customData", "dynamically generated data (JSON format)");
button.setAttribute("onclick", "CustomFunction(this);");
newCell.appendChild(button);

function CustomFunction(obj) {
    buttonObj = obj.querySelector('input[type=image][customData]');
    var dataObj = JSON.parse(buttonObj.getAttribute("customData"));
};

这比使用Python循环快得多,而且语法更清晰。您可以在the numpy docsthe pandas docs中了解广播。