Floor or ceiling of a pandas series in python?

柔情痞子 提交于 2019-12-18 11:40:36

问题


I have a pandas series series. If I want to get the element-wise floor or ceiling, is there a built in method or do I have to write the function and use apply? I ask because the data is big so I appreciate efficiency. Also this question has not been asked with respect to the Pandas package.


回答1:


You can use NumPy's built in methods to do this: np.ceil(series) or np.floor(series).

Both return a Series object (not an array) so the index information is preserved.




回答2:


You could do something like this using NumPy's floor, for instance, with a dataframe:

floored_data = data.apply(np.floor)

Can't test it right now but an actual and working solution might not be far from it.




回答3:


I am the OP, but I tried this and it worked:

np.floor(series)



回答4:


clip_lower / clip_upper

With Pandas, you can set a floor via clip_lower or ceiling via 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 supports more generalised functionality, e.g. applying and flooring a ceiling simultaneously, e.g. s.clip(-1, 1).



来源:https://stackoverflow.com/questions/27592456/floor-or-ceiling-of-a-pandas-series-in-python

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!