Python 如何以预定义的增量乘以列?

Python 如何以预定义的增量乘以列?,python,pandas,dataframe,Python,Pandas,Dataframe,假设我有一个在一列中包含整数(值)的数组。当值=100时,该列等于1.00;如果值减少,则每增加25个值,就添加0.25,反之亦然。但我只想在新列中添加0.25,最大值为2.00,即最多四次 预期结果“大小”: value size 90 0.00 100 1.00 110 1.00 115 1.00 125 1.25 145 1.25 150 1.50 175

假设我有一个在一列中包含整数(值)的数组。当值<100时,我需要创建第二列,该列等于0;当值>=100时,该列等于1.00;如果值减少,则每增加25个值,就添加0.25,反之亦然。但我只想在新列中添加0.25,最大值为2.00,即最多四次

预期结果“大小”:

value   size
90          0.00
100         1.00 
110         1.00 
115         1.00 
125         1.25 
145         1.25 
150         1.50 
175         1.75 
195         1.75 
200         2.00 
230         2.00 
250         2.00 
200         2.00 
180         1.75 
150         1.50 
135         1.25 
120         1.00 
109         1.00 
99          0.00

任何建议都欢迎

您可以使用
/
(整数除法):


除了之外,您可以使用
/
(整数除法):


除了通过使用
pd.cut

R=list(range(100, 225,25))
R=[0]+R+[np.inf]
label=[0]+list(np.arange(1.0,2.25,0.25))
pd.cut(df.value,R,labels=label,right=False)

Out[16]: 
0     0.00
1     1.00
2     1.00
3     1.00
4     1.25
5     1.25
6     1.50
7     1.75
8     1.75
9     2.00
10    2.00
11    2.00
12    2.00
13    1.75
14    1.50
15    1.25
16    1.00
17    1.00
18    0.00

使用
pd.cut

R=list(range(100, 225,25))
R=[0]+R+[np.inf]
label=[0]+list(np.arange(1.0,2.25,0.25))
pd.cut(df.value,R,labels=label,right=False)

Out[16]: 
0     0.00
1     1.00
2     1.00
3     1.00
4     1.25
5     1.25
6     1.50
7     1.75
8     1.75
9     2.00
10    2.00
11    2.00
12    2.00
13    1.75
14    1.50
15    1.25
16    1.00
17    1.00
18    0.00

这里的解决方案非常类似于:


这里的解决方案非常类似于:


size
应该是预期结果吗?请展示您的努力,此解决方案有点牵扯。是否应将
size
作为预期结果?请展示您的努力,这个解决方案有点复杂。可能
df.value.clip(100200)//25*0.25
?@MaxU-eep,是的,那里发生了很多事情(我原以为只是
///code>!)可能
df.value.clip(100200)//25*0.25
?@MaxU-eep,是的,发生了很多事情(我原以为它只是
/
!)@cJc,但这是错误的!我没有将小于99的设置为0!!@Ihayden,是的,我错过了这一部分,谢谢!我会在回到PC后尝试修复它。@Ihayden你是绝对正确的,我直到现在才有可能真正尝试这一点。谢谢你的帮助和指出这一点。@cJc,但这是错误的!我没有将这些设置为零ss比99比0差!!@AndyHayden,是的,我错过了那部分,谢谢!我会在回到PC后尝试修复它。@AndyHayden你完全正确,我直到现在才有可能真正尝试。谢谢你的帮助和指出这一点。
In [13]: (df.value >= 100) * ((df.value // 25) * 0.25).clip(0, 2)
Out[13]:
0     0.00
1     1.00
2     1.00
3     1.00
4     1.25
5     1.25
6     1.50
7     1.75
8     1.75
9     2.00
10    2.00
11    2.00
12    2.00
13    1.75
14    1.50
15    1.25
16    1.00
17    1.00
18    0.00
Name: value, dtype: float64
R=list(range(100, 225,25))
R=[0]+R+[np.inf]
label=[0]+list(np.arange(1.0,2.25,0.25))
pd.cut(df.value,R,labels=label,right=False)

Out[16]: 
0     0.00
1     1.00
2     1.00
3     1.00
4     1.25
5     1.25
6     1.50
7     1.75
8     1.75
9     2.00
10    2.00
11    2.00
12    2.00
13    1.75
14    1.50
15    1.25
16    1.00
17    1.00
18    0.00
In [80]: df['size'] = df['value'].clip(100, 200) // 25 * 0.25

In [81]: df
Out[81]:
    value  size
0      90  1.00
1     100  1.00
2     110  1.00
3     115  1.00
4     125  1.25
5     145  1.25
6     150  1.50
7     175  1.75
8     195  1.75
9     200  2.00
10    230  2.00
11    250  2.00
12    200  2.00
13    180  1.75
14    150  1.50
15    135  1.25
16    120  1.00
17    109  1.00
18     99  1.00