为csv文件中的单元格设置最大值

时间:2019-07-03 02:15:49

标签: python pandas numpy

我有一些看起来像这样的数据:

      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

使用python,我希望能够设置每个值可以为的最大值。我不要将最大值设为300,因此任何超过300(例如326)的条目都将更改为300。

我想要的结果如下:

      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

这可以在Python中完成吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

确定可以使用

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

df=df.mask(df>300,300)