Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Round columns in pandas dataframe

Tags:

python

pandas

I have got the following pandas data frame

          Y         X id WP_NER
0 35.973496 -2.734554  1  WP_01 
1 35.592138 -2.903913  2  WP_02 
2 35.329853 -3.391070  3  WP_03 
3 35.392608 -3.928513  4  WP_04 
4 35.579265 -3.942995  5  WP_05 
5 35.519728 -3.408771  6  WP_06 
6 35.759485 -3.078903 7 WP_07 

I´d like to round Y and X columns using pandas. How can I do that ?

like image 866
kamome Avatar asked Jul 06 '15 13:07

kamome


People also ask

How do you round an entire DataFrame?

The round() method rounds the values in the DataFrame into numbers with the specified number of decimals, default 0 decimals.

How do you round to 2 decimal places in Python?

Python's round() function requires two arguments. First is the number to be rounded. Second argument decides the number of decimal places to which it is rounded. To round the number to 2 decimals, give second argument as 2.


2 Answers

You can now, use round on dataframe

Option 1

In [661]: df.round({'Y': 2, 'X': 2})
Out[661]:
       Y     X  id WP_NER
0  35.97 -2.73   1  WP_01
1  35.59 -2.90   2  WP_02
2  35.33 -3.39   3  WP_03
3  35.39 -3.93   4  WP_04
4  35.58 -3.94   5  WP_05
5  35.52 -3.41   6  WP_06
6  35.76 -3.08   7  WP_07

Option 2

In [662]: cols = ['Y', 'X']

In [663]: df[cols] = df[cols].round(2)

In [664]: df
Out[664]:
       Y     X  id WP_NER
0  35.97 -2.73   1  WP_01
1  35.59 -2.90   2  WP_02
2  35.33 -3.39   3  WP_03
3  35.39 -3.93   4  WP_04
4  35.58 -3.94   5  WP_05
5  35.52 -3.41   6  WP_06
6  35.76 -3.08   7  WP_07
like image 80
Zero Avatar answered Oct 11 '22 19:10

Zero


You can apply round:

In [142]:
df[['Y','X']].apply(pd.Series.round)

Out[142]:
    Y  X
0  36 -3
1  36 -3
2  35 -3
3  35 -4
4  36 -4
5  36 -3
6  36 -3

If you want to apply to a specific number of places:

In [143]:
df[['Y','X']].apply(lambda x: pd.Series.round(x, 3))

Out[143]:
        Y      X
0  35.973 -2.735
1  35.592 -2.904
2  35.330 -3.391
3  35.393 -3.929
4  35.579 -3.943
5  35.520 -3.409
6  35.759 -3.079

EDIT You assign the above to the columns you want to modify like the following:

In [144]:
df[['Y','X']] = df[['Y','X']].apply(lambda x: pd.Series.round(x, 3))
df

Out[144]:
        Y      X  id WP_NER
0  35.973 -2.735   1  WP_01
1  35.592 -2.904   2  WP_02
2  35.330 -3.391   3  WP_03
3  35.393 -3.929   4  WP_04
4  35.579 -3.943   5  WP_05
5  35.520 -3.409   6  WP_06
6  35.759 -3.079   7  WP_07
like image 44
EdChum Avatar answered Oct 11 '22 20:10

EdChum