将上下限添加到pandas数据框中的所有值

时间:2018-06-21 08:51:27

标签: python pandas dataframe

我想为数据框中的每个元素添加-3和3的下限和上限

df=pd.DataFrame({'a':[4,-3,6,2],'b':[1,2,3,4],'c':[11,-4.5,2,6]})

最终结果应显示

   a  b  c
0  3  1  3
1 -3  2 -3
2  3  3  2
3  2  3  3

我这样做是通过遍历每列然后使用

df['a'].apply(lambda x: -3 if x<-3 else (3 if x>3 else x))

有没有更优雅的(python)方法来做到这一点

1 个答案:

答案 0 :(得分:4)

使用pd.DataFrame.clip

df = df.clip(-3, 3).astype(int)

   a  b  c
0  3  1  3
1 -3  2 -3
2  3  3  2
3  2  3  3

整数转换是必需的,因为系列c最初是float。看来pd.DataFrame.clip不会触发dtypes的重新广播。