使用 Pandas 在 DataFrame 中插入自定义系列作为新列

Insert a customized series as a new column in a DataFrame with Pandas

给定此 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. 为对应的Year < 3插入0
  2. 第一个 单元格插入 1 Year >= 3
  3. 之后插入公比为0.5的几何级数对应Year >= 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