我使用以下代码创建了一个数据框列,并试图弄清楚如何将其舍入到最近的第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
答案 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提供的解决方案非常相似