如何计算pandas中的累计数量


您可以使用以下方法来计算 pandas DataFrame 中的累积数字:

方法一:按组累计计数

 df[' cum_count '] = df. groupby (' col1 '). cumcount ()

方式二:多组累计记账

 df[' cum_count '] = df. groupby ([' col1 ', ' col2 ']). cumcount ()

以下示例展示了如何在实践中使用以下 pandas DataFrame 的每种方法:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' position ': ['G', 'G', 'G', 'F', 'G', 'G', 'F', 'F'],
                   ' points ': [14, 22, 25, 34, 30, 12, 10, 18]})

#view DataFrame
print (df)

  team position points
0 AG 14
1 AG 22
2 AG 25
3AF 34
4 BG 30
5 BG 12
6 BF 10
7 BF 18

示例 1:Pandas 中按组进行的累计计数

我们可以使用以下语法创建一个名为team_cum_count的新列,用于显示 DataFrame 中每个团队的累积计数:

 #calculate cumulative count by team
df[' team_cum_count '] = df. groupby (' team '). cumcount ()

#view updated DataFrame
print (df)

  team position points team_cum_count
0 AG 14 0
1 AG 22 1
2 AG 25 2
3 AF 34 3
4 BG 30 0
5 BG 12 1
6 BF 10 2
7 BF 18 3

名为team_cum_count的新列包含每个团队的累积计数(从零值开始)。

如果您希望计数从 1 开始,只需在行末尾添加 1:

 #calculate cumulative count (starting at 1) by team
df[' team_cum_count '] = df. groupby (' team '). cumcount () + 1

#view updated DataFrame
print (df)

  team position points team_cum_count
0 AG 14 1
1 AG 22 2
2 AG 25 3
3 AF 34 4
4 BG 30 1
5 BG 12 2
6 BF 10 3
7 BF 18 4

名为team_cum_count的新列包含每个团队的累积计数,从值 1 开始。

示例 2:按 Pandas 中的组计算累积计数

我们可以使用以下语法创建一个名为team_pos_cum_count的新列,该列显示 DataFrame 中每个团队位置的累积计数:

 #calculate cumulative count by team
df[' team_pos_cum_count '] = df. groupby ([' team ', ' position ']). cumcount () 

#view updated DataFrame
print (df)

  team position points team_pos_cum_count
0 AG 14 0
1 AG 22 1
2 AG 25 2
3 AF 34 0
4 BG 30 0
5 BG 12 1
6 BF 10 0
7 BF 18 1

名为team_pos_cum_count的新列包含每个团队位置的累积计数(从零开始)。

注意:您可以在此处找到 pandas 中cumcount函数的完整文档。

其他资源

以下教程解释了如何在 pandas 中执行其他常见任务:

如何对 Pandas 中的特定列求和
如何根据 Pandas 中的条件对列求和
如何计算pandas中的反向累积和

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注