分享

Pandas基础:在Pandas数据框架中移动列

 hercules028 2022-04-24

excelperfect

标签:pandasPython

有时候,我们需要在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社群,进行技术交流和提问,获取更多电子资料,并通过社群加入专门的微信讨论群,更方便交流。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多