擅长:python、mysql、java
<p>使用<code>index</code>对齐计算(我添加了一个shape missing Target==1)。这假设您在<code>['nom_id', 'target']</code>上没有任何重复的内容:</p>
<pre><code>df = pd.DataFrame([['Circle', 'Circle', 'Polygon', 'Polygon',"Trapezoid", 'Octagon'],
[0, 1, 0, 1, 1, 0], [28152, 9168, 24741, 11402,5000, 6000]],
['nom_1', 'target', 'id']).T
df = df.set_index('nom_1')
u = df.loc[df.target.eq(1), 'id']
v = df.loc[df.target.eq(0), 'id']
# - 0 When Target == 1 is missing
# |
s = u.divide(u.add(v, fill_value=0)).fillna(0)
#nom_1
#Circle 0.245659
#Octagon 0.000000
#Polygon 0.315469
#Trapezoid 1.000000
#Name: id, dtype: float64
</code></pre>