這個問題是基于我之前的問題。
我有一個如下所示的 Pandas 資料框。我想要做的是計算 r1 列到 r50 的平均值,每次在相應的 s 列(r1-s2、r2-s2、... r50-s50)中出現“5”。
s1 ... s50 r1 ... r50
5 5 0.5 1
1 5 0.43 0.5
5 1 1 0.43
5 5 1 1
本例中,s1中:5出現3次,取平均值0.5 1 1=0.83,s50中:5發生3次,取平均值1 0.5 1=0.83。我想在新的資料框中獲得結果。有人可以幫我計算一下嗎?謝謝!
uj5u.com熱心網友回復:
您可以filter為以 開頭的列s,并為每一列選擇專案所在的索引5,然后從同名列中選擇那些行,除了s替換為r,并計算平均值:
s = df.filter(like='s').apply(lambda col: df.loc[col == 5, col.name.replace('s', 'r')].mean())
輸出:
>>> s
s1 0.833333
s50 0.833333
dtype: float64
>>> s['s1']
0.8333333333333334
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/398221.html
上一篇:為插槽的每個子級添加一個類
