在datafram中将一列向前移动几天

2024-04-26 10:05:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我想将列val中的所有值在以下数据帧中提前3天移动:

datetime    val val_b
12/20/2010      23
12/21/2010      12
12/22/2010  23  27
12/23/2010      26
12/24/2010      28
12/25/2010      17
12/26/2010      26
12/27/2010  21  14
12/28/2010      20
12/29/2010      18
12/30/2010  15  22
12/31/2010      20
1/1/2011        13
1/2/2011    12  30
1/3/2011        25
1/4/2011        15
1/5/2011        19
1/6/2011        14

我尝试使用pd.DateOffset函数,但是hat将所有列向前移动,我不希望这样。你知道吗


Tags: 数据函数datetimehatvalpddateoffset
1条回答
网友
1楼 · 发布于 2024-04-26 10:05:10

首先创建DatetimeIndex,然后将^{}与参数freq一起使用:

df['datetime'] = pd.to_datetime(df['datetime'])
df = df.set_index('datetime')

df['val'] = df['val'].shift(3, freq='d')
print (df)
             val  val_b
datetime               
2010-12-20   NaN     23
2010-12-21   NaN     12
2010-12-22   NaN     27
2010-12-23   NaN     26
2010-12-24   NaN     28
2010-12-25  23.0     17
2010-12-26   NaN     26
2010-12-27   NaN     14
2010-12-28   NaN     20
2010-12-29   NaN     18
2010-12-30  21.0     22
2010-12-31   NaN     20
2011-01-01   NaN     13
2011-01-02  15.0     30
2011-01-03   NaN     25
2011-01-04   NaN     15
2011-01-05  12.0     19
2011-01-06   NaN     14

相关问题 更多 >