使用 Pandas 在 DataFrame 中插入自定义系列作为新列
Insert a customized series as a new column in a DataFrame with Pandas
给定此 DataFrame 的列为:category
、Year
和 Profit
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
而不用手动逐一输入数字:
- 为对应的
Year < 3
插入0
。
- 在 第一个 单元格插入
1
Year >= 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
给定此 DataFrame 的列为:category
、Year
和 Profit
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
而不用手动逐一输入数字:
- 为对应的
Year < 3
插入0
。 - 在 第一个 单元格插入
1
Year >= 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