# [SOLVED] pandas, numpy round down to nearest 100

## Issue

I created a dataframe column with the below code, and was trying to figure out how to round it down to the nearest 100th.

``````...
# 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
``````

## Solution

You need divide by `100`, convert to `int` and last multiple by `100`:

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

Same as:

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

Sample:

``````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
``````

EDIT:

``````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
``````

Answered By – jezrael

Answer Checked By – Pedro (BugsFixing Volunteer)