如何在 pandas 中创建偏移列(附示例)


您可以使用pandas中的shift()函数创建一个列,显示从另一列移动的值。

该函数使用以下基本语法:

 df[' lagged_col1 '] = df[' col1 ']. shift ( 1 )

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

以下示例展示了如何在实践中使用此语法。

示例:在 Pandas 中创建偏移列

假设我们有以下 pandas DataFrame,显示商店连续 10 天的销售额:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' day ': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
                   ' sales ': [18, 10, 14, 13, 19, 24, 25, 29, 15, 18]})
#view DataFrame
print (df)

   day sales
0 1 18
1 2 10
2 3 14
3 4 13
4 5 19
5 6 24
6 7 25
7 8 29
8 9 15
9 10 18

我们可以使用shift()函数创建一个班次列,显示每行前一天的销售额:

 #add column that represents lag of sales column
df[' sales_previous_day '] = df[' sales ']. shift ( 1 )

#view updated DataFrame
print (df)

   day sales sales_previous_day
0 1 18 NaN
1 2 10 18.0
2 3 14 10.0
3 4 13 14.0
4 5 19 13.0
5 6 24 19.0
6 7 25 24.0
7 8 29 25.0
8 9 15 29.0
9 10 18 15.0

以下是如何解释结果:

  • 滞后列中的第一个值是NaN ,因为销售列中没有先前的值。
  • offset 列中的第二个值是18 ,因为它是Sales列中的上一个值。
  • offset 列中的第三个值是10 ,因为它是Sales列中的上一个值。

等等。

请注意,如果需要,我们还可以向 DataFrame 添加多个偏移列:

 #add two lag columns
df[' sales_previous_day '] = df[' sales ']. shift ( 1 )
df[' sales_previous_day2 '] = df[' sales ']. shift ( 2 ) 

#view updated DataFrame
print (df)

   day sales sales_previous_day sales_previous_day2
0 1 18 NaN NaN
1 2 10 18.0 NaN
2 3 14 10.0 18.0
3 4 13 14.0 10.0
4 5 19 13.0 14.0
5 6 24 19.0 13.0
6 7 25 24.0 19.0
7 8 29 25.0 24.0
8 9 15 29.0 25.0
9 10 18 15.0 29.0

您可以使用相同的通用方法来添加任意数量的偏移列。

注意:要创建主列,只需在shift()函数中使用负值即可。

其他资源

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

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

添加评论

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