大熊猫,numpy向下舍入到最近的100

时间:2017-09-03 06:03:35

标签: python pandas numpy

我使用以下代码创建了一个数据框列,并试图弄清楚如何将其舍入到最近的第100个。

...
# This prints out my new value rounded to the nearest whole number.    
df['new_values'] = (10000/df['old_values']).apply(numpy.floor)

# How do I get it to round down to the nearest 100th instead?
# i.e. 8450 rounded to 8400

3 个答案:

答案 0 :(得分:6)

您需要除以100,转换为int,并按100转换倍数:

df['new_values'] = (df['old_values'] / 100).astype(int) *100

同样:

df['new_values'] = (df['old_values'] / 100).apply(np.floor).astype(int) *100

样品:

df = pd.DataFrame({'old_values':[8450, 8470, 343, 573, 34543, 23999]})
df['new_values'] = (df['old_values'] / 100).astype(int) *100
print (df)
   old_values  new_values
0        8450        8400
1        8470        8400
2         343         300
3         573         500
4       34543       34500
5       23999       23900

编辑:

df = pd.DataFrame({'old_values':[3, 6, 89, 573, 34, 23]})
#show output of first divide for verifying output
df['new_values1'] = (10000/df['old_values'])
df['new_values'] = (10000/df['old_values']).div(100).astype(int).mul(100)
print (df)
   old_values  new_values1  new_values
0           3  3333.333333        3300
1           6  1666.666667        1600
2          89   112.359551         100
3         573    17.452007           0
4          34   294.117647         200
5          23   434.782609         400

答案 1 :(得分:3)

借用@ jezrael的样本数据框

df = pd.DataFrame({'old_values':[8450, 8470, 343, 573, 34543, 23999]})

使用floordiv//

df // 100 * 100

   old_values
0        8400
1        8400
2         300
3         500
4       34500
5       23900

答案 2 :(得分:0)

我使用数学模块

尝试了类似的东西
a = [123, 456, 789, 145]

def rdl(x):
ls = []
for i in x:
    a = math.floor(i/100)*100
    ls.append(a)
return ls

rdl(a)

#Output was [100, 200, 400, 700, 100]

希望这提供了一些想法。它与@jezrael提供的解决方案非常相似