python DataFrame的shift()方法的使用
目录
语法示例在python数据分析中,可以使用shift()方法对DataFrame对象的数据进行位置的前滞、后滞移动。
语法
periods可以理解为移动幅度的次数,shift默认一次移动1个单位,也默认移动1次(periods默认为1),则移动的长度为1 * periods。periods可以是正数,也可以是负数。负数表示前滞,正数表示后滞。freq是一个可选参数,默认为None,可以设为一个timedelta对象。适用于索引为时间序列数据时。freq为None时,移动的是其他数据的值,即移动periods*1个单位长度。freq部位None时,移动的是时间序列索引的值,移动的长度为periods * freq个单位长度。axis默认为0,表示对列操作。如果为行则表示对行操作。DataFrame.shift(periods=1, freq=None, axis=0)
移动滞后没有对应值的默认为NaN。
示例
period为正,无freq
import pandas as pd pd.set_option("display.unicode.east_asian_width", True) data = [51.0, 52.33, 51.21, 54.23, 56.78] index = ["2022-2-28", "2022-3-1", "2022-3-2", "2022-3-3", "2022-3-4"] df = pd.DataFrame(data=data, index=index, columns=["close"]) df.index.name = "date" print(df) print("=========================================") df["昨收"] = df["close"].shift() df["change"] = df["close"] - df["close"].shift() print(df)
period为负,无freq
import pandas as pd pd.set_option("display.unicode.east_asian_width", True) data = [51.0, 52.33, 51.21, 54.23, 56.78] index = ["2022-2-28", "2022-3-1", "2022-3-2", "2022-3-3", "2022-3-4"] index = pd.to_datetime(index) index.name = "date" df = pd.DataFrame(data=data, index=index, columns=["昨收"]) print(df) print("=========================================") df["close"] = df["昨收"].shift(-1) df["change"] = df["昨收"].shift(-1) - df["close"] print(df)
period为正,freq为正
import pandas as pd import datetime pd.set_option("display.unicode.east_asian_width", True) data = [51.0, 52.33, 51.21, 54.23, 56.78] index = ["2022-2-28", "2022-3-1", "2022-3-2", "2022-3-3", "2022-3-4"] index = pd.to_datetime(index) index.name = "date" df = pd.DataFrame(data=data, index=index, columns=["close"]) print(df) print("=========================================") print(df.shift(periods=2, freq=datetime.timedelta(3)))
如图,索引列的时间序列数据滞后了6天。(二乘以三)
period为正,freq为负
import pandas as pd import datetime pd.set_option("display.unicode.east_asian_width", True) data = [51.0, 52.33, 51.21, 54.23, 56.78] index = ["2022-2-28", "2022-3-1", "2022-3-2", "2022-3-3", "2022-3-4"] index = pd.to_datetime(index) index.name = "date" df = pd.DataFrame(data=data, index=index, columns=["close"]) print(df) print("=========================================") print(df.shift(periods=3, freq=datetime.timedelta(-3)))
如图,索引列的时间序列数据前滞了9天(三乘以负三)
period为负,freq为负
import pandas as pd import datetime pd.set_option("display.unicode.east_asian_width", True) data = [51.0, 52.33, 51.21, 54.23, 56.78] index = ["2022-2-28", "2022-3-1", "2022-3-2", "2022-3-3", "2022-3-4"] index = pd.to_datetime(index) index.name = "date" df = pd.DataFrame(data=data, index=index, columns=["close"]) print(df) print("=========================================") print(df.shift(periods=-3, freq=datetime.timedelta(-3)))
如图,索引列的时间序列数据滞后了9天(负三乘以负三)
到此这篇关于python DataFrame的shift()方法的使用的文章就介绍到这了,更多相关python DataFrame shift() 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 15G资费不大降!三大运营商谁提供的5G网速最快?中国信通院给出答案
- 2联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 3亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 4现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 5如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 6AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 7转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 8充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 9好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 10名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?