簡體   English   中英

pandas dataframe 每行的加權平均值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM