0

给定这个带有列的 DataFrame:categoryYearProfit

在此处输入图像描述

data = {'category':pd.Series(['A','A','A','A','A','A']),
        'Year':pd.Series([1,1,3,3,3,4]),
        'Profit':pd.Series([10,11,5,6,30,31])}
df = pd.DataFrame(data)
display(df)

如何在不手动输入数字的情况下Numbering 按以下规则插入数字以创建新列:

  1. 插入0对应的Year < 3.
  2. 用插入1一个单元格Year >= 3
  3. 之后插入一个具有共同比率的几何级数0.5对应的Year >= 3

愿望输出显示如下:

在此处输入图像描述

4

1 回答 1

3

我们能试试cumsum

s = (0.5**(df.Year.ge(3).cumsum()-1)).mask(df.Year<3,0)
Out[15]: 
0    0.000
1    0.000
2    1.000
3    0.500
4    0.250
5    0.125
Name: Year, dtype: float64
df['numbering'] = s
于 2020-08-07T00:01:49.690 回答