我是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
非常感谢任何帮助!
答案 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 docs和the pandas docs中了解广播。