0

I have some data that that looks like this:

      Date    X    Y    Z
0   Jan-18  247   58  163
1   Feb-18  399   52  182
2   Mar-18  269  209  186
3   Apr-18  124  397  353
4   May-18  113  387   35
5   Jun-18    6   23    3
6   Jul-18  335  284   34
7   Aug-18  154  364   72
8   Sep-18  159  291  349
9   Oct-18  199  253  201
10  Nov-18  106  334  117
11  Dec-18   38  274   23
12  Jan-19    6  326  102
13  Feb-19  124  237  339
14  Mar-19  263   68   75
15  Apr-19  121  116   21

Using python I want to be able to set a maximum value that each value can be. I wan't the maximum to be 300, so that any entry that is over 300 (e.g. 326) is changed to 300.

My desired result looks like this:

      Date    x    y    z
0   Jan-18  247   58  163
1   Feb-18  300   52  182
2   Mar-18  269  209  186
3   Apr-18  124  300  300
4   May-18  113  300   35
5   Jun-18    6   23    3
6   Jul-18  300  284   34
7   Aug-18  154  300   72
8   Sep-18  159  291  300
9   Oct-18  199  253  201
10  Nov-18  106  300  117
11  Dec-18   38  274   23
12  Jan-19    6  300  102
13  Feb-19  124  237  300
14  Mar-19  263   68   75
15  Apr-19  121  116   21

Is this achievable to do in Python?

Thanks.

user11015000
  • 151
  • 1
  • 15

1 Answers1

0

Sure you can using

df.loc[:,'X':]=df.loc[:,'X':].clip_upper(300)
df
Out[118]: 
      Date    X    Y    Z
0   Jan-18  247   58  163
1   Feb-18  300   52  182
2   Mar-18  269  209  186
3   Apr-18  124  300  300
4   May-18  113  300   35
5   Jun-18    6   23    3
6   Jul-18  300  284   34
7   Aug-18  154  300   72
8   Sep-18  159  291  300
9   Oct-18  199  253  201
10  Nov-18  106  300  117
11  Dec-18   38  274   23
12  Jan-19    6  300  102
13  Feb-19  124  237  300
14  Mar-19  263   68   75
15  Apr-19  121  116   21

Or

df=df.mask(df>300,300)
BENY
  • 317,841
  • 20
  • 164
  • 234