apo*_*los 3 python arrays numpy rounding pandas
我有一个带有数字系列的数据框,如下所示。我怎样才能以 0.2 为步长来取消每个值?在 Excel 中这很简单,=CEILING(x, 0.2)但是 Python 呢?
df = pd.DataFrame({'A': [1, 1.3, 1.5, 1,6, 1.7, 2]})
Run Code Online (Sandbox Code Playgroud)
据我所知,这样的功能本身并不存在。
您可以使用 NumPy(归功于@DSM):
step = 0.2
df['B'] = np.ceil((df['A'].values / step)) * step
Run Code Online (Sandbox Code Playgroud)
性能较低的版本通过pd.Series.apply:
import pandas as pd
import math
df = pd.DataFrame({'A': [1, 1.3, 1.5, 1,6, 1.7, 2]})
def ceil(x, step=1):
return step * math.ceil(x/step)
df['B'] = df['A'].apply(ceil, step=0.2)
# A B
# 0 1.0 1.0
# 1 1.3 1.4
# 2 1.5 1.6
# 3 1.0 1.0
# 4 6.0 6.0
# 5 1.7 1.8
# 6 2.0 2.0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6641 次 |
| 最近记录: |