[英]Pandas: calculate weighted average by row using a dataframe and a series
[英]Weighted average for each row of a pandas dataframe
我們有一個 dataframe df 定義如下:
t = pd.DataFrame(
{
"id": ["id1", "id2", "id3", "id4"],
"A": [1, 4, 6, 12],
"B": [5, 8, 3, 6],
"C": [9, 14, 7, 10],
}
)
然后我有一個清單:
weight = [2, .5, 1]
我需要創建一個新列“WMean”,為每一行提供加權平均值,其中 A 列的權重為 2,B 列的權重為 5,C 的權重為 1。權重不必是列表。 它可以有另一種類型。
我需要最快的方法來做到這一點。
結果是:
id | A | B | C | WMean
id1 | 1 | 5 | 9 | 3.857142857142857
id2 | 4 | 8 | 14 | 7.428571428571429
id3 | 6 | 3 | 7 | 5.857142857142857
id4 | 12 | 6 | 10 | 10.571428571428571
謝謝。
使用numpy.average
按列表過濾列:
weight = [2, .5, 1]
cols = ['A','B','C']
t['WMean'] = np.average(t[cols], weights=weight, axis=1)
print (t)
id A B C WMean
0 id1 1 5 9 3.857143
1 id2 4 8 14 7.428571
2 id3 6 3 7 5.857143
3 id4 12 6 10 10.571429
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.