我想为数据框中的每个元素添加-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)方法来做到这一点
答案 0 :(得分:4)
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
的重新广播。