首页 > 解决方案 > pandas 使用 UTC 索引获取列值

问题描述

我有一个带有使用 UTC 时间的索引的熊猫数据框和一个带有数据的列(在示例中为“value_1”列)。

我的问题是:如何创建一个新列,其中每个值都是第一列的值但 20 秒后。使用下面的示例,我将为第二列的第一个值获取“2011-01-01 00:00:20”时刻的值。

import pandas as pd  
import numpy as np

data_1 = pd.DataFrame(index=pd.date_range('1/1/2011', periods = 1000, freq ='S'))
data_1['value_1'] = 100 + np.random.randint(0,1000,size=(1000, 1))
data_1['value_2'] = ??¿¿

我不知道是否可以将索引更改为其他格式。

我已经看到 pandas 有一些有用的功能来处理时间序列,但我还没有找到一个来解决这个问题。

先感谢您。

标签: pythonpandastime-series

解决方案


您可以使用shift要使用的秒数(此处为 20):

data_1['value_2'] = data_1['value_1'].shift(-20)

或者可以使用 index + 20s 重新索引并通过以下方式获取值to_numpy

data_1['value_2'] = data_1['value_1'].reindex(data_1['value_1'].index+pd.Timedelta(seconds=20)).to_numpy()

推荐阅读