<p>您只需使用2个布尔掩码:</p>
<pre><code>df.loc[df['ImageName'] <= 70, 'Test'] = 1
df.loc[(df['ImageName'] > 70) & (df['ImageName'] <= 90), 'Test'] = 2
</code></pre>
<p>通过使用掩码,您只需设置满足布尔条件的值,对于第二个掩码,您需要使用<code>&</code>运算符来<code>and</code>条件,并根据运算符的优先级将条件括在括号中</p>
<p>实际上,我认为最好定义bin值并调用<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.cut.html#pandas.cut" rel="nofollow">^{<cd3>}</a>,例如:</p>
^{pr2}$
<p>这里的bin值是使用<code>range</code>生成的,但是您可以自己传递bin值列表,一旦有了bin值,就可以定义一个查找dict:</p>
<pre><code>In [32]:
d = dict(zip(df['group'].unique(), range(len(df['group'].unique()))))
d
Out[32]:
{'[0, 10)': 2,
'[10, 20)': 4,
'[20, 30)': 9,
'[30, 40)': 7,
'[40, 50)': 0,
'[50, 60)': 5,
'[60, 70)': 8,
'[70, 80)': 1,
'[80, 90)': 3,
'[90, 100)': 6}
</code></pre>
<p>现在可以调用<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.map.html#pandas.Series.map" rel="nofollow">^{<cd5>}</a>并添加新列:</p>
<pre><code>In [33]:
df['test'] = df['group'].map(d)
df
Out[33]:
ImageName group test
0 48 [40, 50) 0
1 78 [70, 80) 1
2 5 [0, 10) 2
3 4 [0, 10) 2
4 9 [0, 10) 2
5 81 [80, 90) 3
6 49 [40, 50) 0
7 11 [10, 20) 4
8 57 [50, 60) 5
9 17 [10, 20) 4
10 92 [90, 100) 6
11 30 [30, 40) 7
12 74 [70, 80) 1
13 62 [60, 70) 8
14 83 [80, 90) 3
15 21 [20, 30) 9
16 97 [90, 100) 6
17 11 [10, 20) 4
18 34 [30, 40) 7
19 78 [70, 80) 1
</code></pre>
<p>上面的内容可以修改以满足您的需要,但这只是为了演示一种方法,它应该是快速的,而且不需要迭代df。在</p>