У меня есть серия pandas series. Если я хочу получить элементарный пол или потолок, есть ли встроенный метод или мне нужно написать функцию и использовать ее? Я спрашиваю, потому что данные большие, поэтому я ценю эффективность. Также этот вопрос не задан в отношении пакета pandas.
Пол или потолок серии pandas в python?
Ответ 1
clip_lower/ clip_upper
С Pandas вы можете установить этаж через clip_lower или потолок через clip_upper:
s = pd.Series([-1, 0, -5, 3])
print(s.clip_lower(0))
# 0 0
# 1 0
# 2 0
# 3 3
# dtype: int64
print(s.clip_upper(0))
# 0 -1
# 1 0
# 2 -5
# 3 0
# dtype: int64
clip
pd.Series.clip поддерживает более обобщенную функциональность, например, одновременное применение и покрытие потолка, например, s.clip(-1, 1).
Ответ 2
Вы можете использовать встроенные методы NumPy: np.ceil(series) или np.floor(series).
Оба возвращают объект Series (а не массив), поэтому информация индекса сохраняется.
Ответ 3
Вы можете сделать что-то вроде этого, используя пол NumPy, например, с dataframe:
floored_data = data.apply(np.floor)
Невозможно протестировать его прямо сейчас, но фактическое и рабочее решение может быть далеко от него.
Ответ 4
Я OP, но я пробовал это, и он работал:
np.floor(series)