2016-11-28 175 views
7

我试图设置一个pandas DataFrame列的最大值。例如:Pandas Dataframe:在列中设置最大值

my_dict = {'a':[10,12,15,17,19,20]} 
df = pd.DataFrame(my_dict) 

df['a'].set_max(15) 

会产生:

a 
0 10 
1 12 
2 15 
3 15 
4 15 
5 15 

但事实并非如此。

有100万级的解决方案,找到最大值,但没有到设置最大值......至少,我可以找到。

我可以遍历列表,但我怀疑有一种更快的方式来做到这一点与大熊猫。我的列表将会显着延长,因此我预计迭代需要相对较长的时间。另外,我想要能够处理的任何解决方案NaN

在此先感谢。

+0

看看该'clip'方法。 –

回答

9

我想你可以这样做:

maxVal = 15 
df['a'].where(df['a'] <= maxVal, maxVal)  # where replace values with other when the 
               # condition is not satisfied 

#0 10 
#1 12 
#2 15 
#3 15 
#4 15 
#5 15 
#Name: a, dtype: int64 

或者:

df['a'][df['a'] >= maxVal] = maxVal 
+1

就是这样。知道有一些简单的我错过了。谢谢Psidom。 – pshep123

3

您可以使用clip

适用于数据帧的所有列:

df.clip(upper=15) 

否则适用于选定的列作为看出here

df.clip(upper=pd.Series({'a': 15}), axis=1) 
相关问题