📜  Python|熊猫 dataframe.shift()(1)

📅  最后修改于: 2023-12-03 14:46:30.241000             🧑  作者: Mango

Python | 熊猫 dataframe.shift()

简介

DataFrame.shift() 方法是 pandas 库的一个数据重塑方法,它主要用于将 DataFrame 中的数据按轴方向移动指定的偏移量。

语法
DataFrame.shift(periods=1, freq=None, axis=0, fill_value=None)
参数
  • periods: 必需参数。移动的偏移量,可以是正数或负数。
  • freq: 可选参数。可用于指定移位的频率。默认值为 None,表示不使用时间序列偏移量。
  • axis: 可选参数。指定沿着哪个轴移动数据,默认值为 0。
  • fill_value: 可选参数。指定用于填充移动后空缺的值,默认为 None。
返回值

返回经过偏移位移的 DataFrame 对象。

示例
移动数据

我们可以简单地通过移动数据来计算 DataFrame 中每个数字与其前一个数字之间的差异。

import pandas as pd

data = {'col_1': [1, 2, 4, 8], 'col_2': [2, 4, 8, 16]}
df = pd.DataFrame(data)

# 移动数据并计算差异
shifted = df.shift(1)
diff = df - shifted

print(diff)

以上代码将输出:

   col_1  col_2
0    NaN    NaN
1    1.0    2.0
2    2.0    4.0
3    4.0    8.0
移动时间序列数据

我们可以使用 freq 参数指定时间序列的标签来移动时间序列数据。

import pandas as pd

data = {'date': ['2022-01-01', '2022-01-02', '2022-01-03', '2022-01-04'], 
        'col_1': [1, 2, 4, 8], 
        'col_2': [2, 4, 8, 16]}
df = pd.DataFrame(data)

# 将 date 列设置为 DatetimeIndex
df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d')
df.set_index('date', inplace=True)

# 移动数据
shifted = df.shift(1, freq=pd.DateOffset(days=2))

print(shifted)

以上代码将将 col_1col_2 列向下移动 2 天,输出如下:

            col_1  col_2
date                    
2021-12-30    NaN    NaN
2021-12-31    NaN    NaN
2022-01-01    1.0    2.0
2022-01-02    2.0    4.0