excelperfect 標簽:pandas,Python 有時候,我們需要在pandas數(shù)據框架內移動一列,shift()方法提供了一種方便的方法來實現(xiàn)。 為了演示起見,我們創(chuàng)建兩個數(shù)據框架: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移動數(shù)據。 在pandas數(shù)據框架中向上/向下移動列 要向下移動列,將periods設置為正數(shù)。要向上移動列,將其設置為負數(shù)。 注意,只有數(shù)據發(fā)生了移位,而索引保持不變。數(shù)據移動了,現(xiàn)在有兩個空行,由np.nan值自動填充。 對時間序列數(shù)據移動列 當處理時間序列數(shù)據時,可以通過包含freq參數(shù)來改變一切,包括索引和數(shù)據。注意下面的例子,索引隨著所有數(shù)據向下(向前)移動了2天。目前,如果想使用freq參數(shù),索引必須是datetime類型的數(shù)據,否則pandas將引發(fā)NotImplementedError。 向左或向右移動列 可以使用axis參數(shù)來控制移動的方向。默認情況下,axis=0,這意味著移動行(向上或向下);設置axis=1將使列向左或向右移動。 在下面的示例中,將所有數(shù)據向右移動了1列。因此,第一列變?yōu)榭?,?/span>np.nan自動填充。 如果不需要NaN值,還可以使用fill_value參數(shù)填充空行/空列。 Pandas.Series shift()方法 如前所述,Series類還有一個類似的shift()方法,其工作方式完全相同,只是它對一個系列(即單個列)而不是整個數(shù)據框架進行操作。當然,由此產生的數(shù)據是一個pandasSeries。 注:本文學習整理自pythoninoffice.com。 歡迎在下面留言,完善本文內容,讓更多的人學到更完美的知識。 歡迎到知識星球:完美Excel社群,進行技術交流和提問,獲取更多電子資料,并通過社群加入專門的微信討論群,更方便交流。 |
|
來自: hercules028 > 《Python and AI》