pandas divide row value by aggregated sum with a condition set by other cell
<p>Hi Hoping to get some help, I have two columns Dataframe <code>df</code> as; </p>

<pre><code>Source ID
1      2
2      3
1      2
1      2
1      3
3      1
</code></pre>

<p>My intention is to group the Source and divide the ID cell by total based on the grouped Source and attach this to the orginial dataframe so the new column would look like;</p>

<pre><code>   Source ID  ID_new
    1      2  2/9
    2      3  3/3
    1      2  2/9
    1      2  2/9
    1      3  3/9
    3      1  3/1
</code></pre>

<p>I've gotten as far as;</p>

<pre><code>df.groupby('Source ID')['ID'].sum()
</code></pre>

<p>to get the total for <code>ID</code> but Im not sure where to go next.  </p>

<p>try this:</p>

<pre><code>In [79]: df.assign(ID_new=df.ID/df.groupby('Source').ID.transform('sum'))
Out[79]:
   Source  ID    ID_new
0       1   2  0.222222
1       2   3  1.000000
2       1   2  0.222222
3       1   2  0.222222
4       1   3  0.333333
5       3   1  1.000000
</code></pre>

<p>if you need it as a new <strong>persistent</strong> column you can do it as @jezrael proposed in the <a href="http://stackoverflow.com/questions/39387954/pandas-divide-row-value-by-aggregated-sum-with-a-condition-set-by-other-cell/39388025?noredirect=1#comment66102743_39388025">comment</a>:</p>

<pre><code>In [81]: df['ID_new'] = df.ID/df.groupby('Source').ID.transform('sum')

In [82]: df
Out[82]:
   Source  ID    ID_new
0       1   2  0.222222
1       2   3  1.000000
2       1   2  0.222222
3       1   2  0.222222
4       1   3  0.333333
5       3   1  1.000000
</code></pre>

python pandas dataframe group-by