如何在数据框列上应用上限?

时间:2018-03-08 13:46:22

标签: python arrays pandas numpy rounding

我有一个带有数字系列的数据框,如下所示。我怎样才能说出每一个价值,让我们说一下0.2?在Excel中很容易,通过=CEILING(x, 0.2)但是Python呢?

df = pd.DataFrame({'A': [1, 1.3, 1.5, 1,6, 1.7, 2]})

1 个答案:

答案 0 :(得分:3)

据我所知,这样的功能本身并不存在。

您可以使用NumPy(归功于@DSM):

step = 0.2
df['B'] = np.ceil((df['A'].values / step)) * step

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