如何计算 pandas 中每组的偏移量


您可以使用以下方法来计算 pandas DataFrame 中的组移位值:

方法一:按组计算偏移量

 df[' lagged_values '] = df. groupby ([' group '])[' values ']. shift ( 1 )

方法二:按多组计算偏移量

 df[' lagged_values '] = df. groupby ([' group1 ', ' group2 '])[' values ']. shift ( 1 )

请注意, shift()函数的值指示要计算移位的值的数量。

以下示例展示了如何在实践中使用每种方法。

示例1:按组计算偏移量

假设我们有以下 pandas DataFrame,它显示了两家商店连续几天的销售额:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' store ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' sales ': [18, 10, 14, 13, 19, 24, 25, 29]})
#view DataFrame
print (df)

  blind sales
0 to 18
1 to 10
2 to 14
3 to 13
4 B 19
5 B 24
6 B 25
7 B 29

我们可以使用以下语法创建一个偏移列,显示每个商店前一天的销售额:

 #add column that displays lag of sales column by store
df[' lagged_sales '] = df. groupby ([' store '])[' sales ']. shift ( 1 )

#view updated DataFrame
print (df)

  store sales lagged_sales
0 to 18 NaN
1 to 10 18.0
2 A 14 10.0
3 A 13 14.0
4 B 19 NaN
5 B 24 19.0
6 B 25 24.0
7 B 29 25.0

以下是如何解释结果:

  • 偏移列中的第一个值是NaN ,因为商店 A 的销售列中没有先前的值。
  • 偏移列中的第二个值是18 ,因为它是商店 A 的销售额列中的上一个值。

等等。

示例2:计算多个组的偏移量

假设我们有以下 pandas DataFrame,它显示了两家商店的员工连续几天的销售额:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' store ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' employee ':['O', 'O', 'R', 'R', 'O', 'O', 'R', 'R'],
                   ' sales ': [18, 10, 14, 13, 19, 24, 25, 29]})
#view DataFrame
print (df)

  store employee sales
0 AO 18
1 AO 10
2 AR 14
3 AR 13
4 BO 19
5 BO 24
6 BR 25
7 BR 29

我们可以使用以下语法创建一个偏移列,显示每个商店每个员工前一天的销售额:

 #add column that displays lag of sales column by store and employee
df[' lagged_sales '] = df. groupby ([' store ',' employee '])[' sales ']. shift ( 1 )

#view updated DataFrame
print (df)

  store employee sales lagged_sales
0 AO 18 NaN
1 AO 10 18.0
2 AR 14 NaN
3 AR 13 14.0
4 BO 19 NaN
5 BO 24 19.0
6 BR 25 NaN
7 BR 29 25.0

新的lagged_sales列显示每家商店每位员工前一天的销售额。

注意:在此示例中,我们按两列进行分组,但您可以通过在groupby()函数中包含任意数量的变量名称来按任意数量的列进行分组。

其他资源

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

如何删除 Pandas 中的列
如何排除 Pandas 中的列
如何将函数应用于 Pandas 中的选定列
如何更改 Pandas DataFrame 中的列顺序

添加评论

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