2016-11-28 12 views
7

pandas DataFrame列の最大値を設定しようとしています。たとえば:Pandas Dataframe:列に最大値を設定します

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

をしかし、それはしていません:

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

df['a'].set_max(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) 
関連する問題