标签:pandas,Python
有时候,我们需要在pandas数据框架内移动一列,shift()方法提供了一种方便的方法来实现。
为了演示起见,我们创建两个数据框架:df包含字母索引,df2包含日期时间索引。
import pandas as pd
df = pd.DataFrame({'a':range(0,5),
'b':range(5,10)})
df2 = pd.DataFrame({'a':range(0,5),
'b':range(5,10)},
index=pd.date_range("2020-01-01","2020-01-05"))
pandas Shift()语法
DataFrame.shift(periods = 1,
freq = None,
axis = 0,
fill_value)
注意,pandas.Series对象还有一个类似的方法shift(),该方法允许为Series移动数据。
在pandas数据框架中向上/向下移动列
要向下移动列,将periods设置为正数。要向上移动列,将其设置为负数。
注意,只有数据发生了移位,而索引保持不变。数据移动了,现在有两个空行,由np.nan值自动填充。
对时间序列数据移动列
当处理时间序列数据时,可以通过包含freq参数来改变一切,包括索引和数据。注意下面的例子,索引随着所有数据向下(向前)移动了2天。目前,如果想使用freq参数,索引必须是datetime类型的数据,否则pandas将引发NotImplementedError。
向左或向右移动列
可以使用axis参数来控制移动的方向。默认情况下,axis=0,这意味着移动行(向上或向下);设置axis=1将使列向左或向右移动。
在下面的示例中,将所有数据向右移动了1列。因此,第一列变为空,由np.nan自动填充。
如果不需要NaN值,还可以使用fill_value参数填充空行/空列。
Pandas.Series shift()方法
如前所述,Series类还有一个类似的shift()方法,其工作方式完全相同,只是它对一个系列(即单个列)而不是整个数据框架进行操作。当然,由此产生的数据是一个pandasSeries。
注:本文学习整理自pythoninoffice.com。