2016-11-28 5 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 

Но это не так.

Есть миллион решений найти максимальное значение, но ничего не установить максимальное значение ... по крайней мере, я могу найти.

Я мог перебирать список, но я подозреваю, что есть более быстрый способ сделать это с помощью панд. Мои списки будут значительно длиннее, и поэтому я ожидаю, что итерация займет относительно больше времени. Кроме того, я хотел бы, чтобы любое решение могло обрабатывать 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) 
Смежные вопросы