我正在寻找一种基于值的大小替换大小的Python方法。假设我有一个数据框:
ds = pandas.DataFrame({'x' : [4,3,2,1,5], 'y' : [4,5,6,7,8]})
我想将x上小于2乘以2和大于4乘以4的值替换。并且与y值类似,将小于5乘以5的值和大于7乘以7的值替换为得到这个数据框:
ds = pandas.DataFrame({'x' : [4,3,2,2,4], 'y' : [5,5,6,7,7]})
我通过在行上进行迭代来做到这一点,但实际上是丑陋的,采用了更多的pandas-pythonic方式(基本上我想消除极值)
答案 0 :(得分:1)
您可以使用clip
ds.x.clip(2,4)
Out[42]:
0 4
1 3
2 2
3 2
4 4
Name: x, dtype: int64
#ds.x=ds.x.clip(2,4)
#ds.y=ds.y.clip(5,7)
答案 1 :(得分:1)
执行此操作的一种方法如下:
>>> ds[ds.x.le(2) ] =2
>>> ds[ds.x.ge(4) ] =4
>>> ds
x y
0 4 4
1 3 5
2 2 6
3 2 2
4 4 4