Python Can';t在DataFrame中向下舍入列值

Python Can';t在DataFrame中向下舍入列值,python,pandas,dataframe,math,Python,Pandas,Dataframe,Math,我有一个数据帧: ID Turn Bonus 55 4033650 270.00 5.0 17 4034067 298.00 6.0 38 4030923 343.00 7.0 7 4032873 329.25 7.0 22 4031998 343.80 7.0 51 4033497 392.00 8.0 8 4033672 435.20 9.0 18 3546068 448.00 9.0 59 4034004 527.00 11.

我有一个数据帧:

    ID      Turn    Bonus
55  4033650 270.00  5.0
17  4034067 298.00  6.0
38  4030923 343.00  7.0
7   4032873 329.25  7.0
22  4031998 343.80  7.0
51  4033497 392.00  8.0
8   4033672 435.20  9.0
18  3546068 448.00  9.0
59  4034004 527.00  11.0
27  4032970 569.30  11.0
23  4032170 584.00  12.0
32  4029310 728.00  15.0
58  4033822 767.80  15.0
31  4033500 872.90  17.0
21  4031524 914.20  18.0
43  4032230 981.70  20.0
16  4033742 1034.10 21.0
12  4031882 1075.80 22.0
15  4031961 1463.40 29.0
26  4032717 1460.25 29.0
46  4032464 1897.75 38.0
14  4029057 1991.40 40.0
30  4033461 2252.90 45.0
60  4034085 2446.00 49.0
49  4033296 3279.60 50.0
我想对
Bonus
列中的值进行四舍五入。
我为获得这些值所做的工作:

df['Bonus'] = round((df['Turn']/250)*5)
不幸的是,它没有按照我想要的方式进行,因为我想把它四舍五入。 当我尝试使用
math.floor()
时,我得到了
TypeError:无法将序列转换为

我甚至尝试使用
.astype()
df['Bonus']
的类型更改为
float
,但没有效果

我想从6-9轮到5轮,11-14轮到10轮,等等

你们能帮忙吗,伙计们?

试试:

import numpy as np
df['Bonus'] = np.floor(df['Bonus']).astype(int)
或:


从你的一条评论到这个问题,看起来你想要四舍五入到5的倍数

这将完成以下工作:

df.Bonus = (df.Bonus/6).astype(np.int)*5

它将从第5轮到第0轮和第10轮到第5轮(根据您的评论
@sygneto,我想从第6-9轮到第5轮,从第11-14轮到第10轮,依此类推
似乎是您想要的)

如果你想保持5的倍数不变,就用5代替6

df.Bonus = (df.Bonus/5).astype(np.int)*5
输入df:

    ID     Turn  Bonus
0  4033650   270.00    5.0
1  4033650   298.00    6.0
2  4032717  1460.25   29.0
3  4032464  1897.75   38.0
对于这个例子,我们要做区间值=5。为了做到这一点,我们想知道在没有休息的情况下,奖金栏中有多少次是“5”(向下舍入)

然后将round函数添加到
round()
以下值:

df['Bonus'] = df['Bonus'].apply(lambda x: round(x/5))
df:

        ID     Turn  Bonus
0  4033650   270.00      1
1  4033650   298.00      1
2  4032717  1460.25      6
3  4032464  1897.75      8
最后将其乘以5,得到我们想要的结果

 df['Bonus'] = df['Bonus'].apply(lambda x: 5*round(x/5))

        ID     Turn  Bonus
0  4033650   270.00      5
1  4033650   298.00      5
2  4032717  1460.25     30
3  4032464  1897.75     40

rounr下降值“5.0”?这是总价值,你的期望值是多少?@sygneto我想从6-9到5,11-14到10,等等!它起作用了!请不要只发布代码作为答案,还要解释代码的作用以及它是如何解决问题的。带解释的答案通常更有帮助,质量更好,更有可能吸引更多的选票。请为你的答案提供更多的上下文。即使它可能是正确的,关于你的解决方案的几句话将帮助所有人@美塞苔丝就行了。但即使没有评论,答案是正确的,也不应该被否决。。
df['Bonus'] = df['Bonus'].apply(lambda x: (x/5))
df:
        ID     Turn  Bonus
0  4033650   270.00    1.0
1  4033650   298.00    1.2
2  4032717  1460.25    5.8
3  4032464  1897.75    7.6
df['Bonus'] = df['Bonus'].apply(lambda x: round(x/5))
df:

        ID     Turn  Bonus
0  4033650   270.00      1
1  4033650   298.00      1
2  4032717  1460.25      6
3  4032464  1897.75      8
 df['Bonus'] = df['Bonus'].apply(lambda x: 5*round(x/5))

        ID     Turn  Bonus
0  4033650   270.00      5
1  4033650   298.00      5
2  4032717  1460.25     30
3  4032464  1897.75     40