擅长:python、mysql、java
<p>对于标签和箱子,可以使用<code>pandas.cut</code>。请注意,在这个函数中不能使用单例作为bin。因此,您必须在以后创建它。你可以这样做</p>
<p>首先,我重新创建一个数据帧:</p>
<pre><code> import io
temp = u"""
GeneID A
1 0.3
2 0.0
3 143
4 9
5 0.6"""
foo = pd.read_csv(io.StringIO(temp),delim_whitespace = True)
</code></pre>
<p>然后我创建新列并用标签<code>l1</code>填充<code>NaN</code>值,该标签对应于单例<code>[0]</code></p>
<pre><code>foo['Exp_prof'] = pd.cut(foo.A,bins = [0,1,10,100,np.inf],labels = ['l2','l3','l4','l5'])
foo['Exp_prof'] = foo['Exp_prof'].cat.add_categories(['l1'])
foo['Exp_prof'] = foo['Exp_prof'].fillna('l1')
</code></pre>
<p>我用这个新的列来计算概率:</p>
<pre><code>foo['Prob_val'] = foo.Exp_prof.map((foo.Exp_prof.value_counts()/len(foo)).to_dict())
</code></pre>
<p>输出为:</p>
<pre><code> GeneID A Exp_prof Prob_val
0 1 0.3 l2 0.4
1 2 0.0 l1 0.2
2 3 143.0 l5 0.2
3 4 9.0 l3 0.2
4 5 0.6 l2 0.4
</code></pre>