excelperfect 标签: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。 欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。 欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料,并通过社群加入专门的微信讨论群,更方便交流。 |
|
来自: hercules028 > 《Python and AI》