2016-11-28 125 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) 
相關問題