2

我有一个数据框,df:

df:
            val
date
2012-01-01  4.2      
2012-01-02  3.7
2012-01-03  6.2
2012-01-04  1.2
2012-01-05  2.4
2012-01-06  2.3

我要创建的是一个从 0 开始的指定日期的列,并相应地填写该列(假设本例中的日期是 2012-01-04):

df2:
            val  tracking
date
2012-01-01  4.2  -3
2012-01-02  3.7  -2
2012-01-03  6.2  -1
2012-01-04  1.2  0
2012-01-05  2.4  1
2012-01-06  2.3  2

我尝试使用 np.arange() 但无法集中在我需要的行上。日期列设置为索引(pandas df)。

谢谢。

4

1 回答 1

3

我认为最简单的方法是分两部分进行:

df['tracking'] = pd.np.arange(len(df))

In [12]: df
Out[12]: 
            val  tracking
date                     
2012-01-01  4.2         0
2012-01-02  3.7         1
2012-01-03  6.2         2
2012-01-04  1.2         3
2012-01-05  2.4         4
2012-01-06  2.3         5

df['tracking'] -= df.ix['2012-01-04']['tracking']

In [14]: df
Out[14]: 
            val  tracking
date                     
2012-01-01  4.2        -3
2012-01-02  3.7        -2
2012-01-03  6.2        -1
2012-01-04  1.2         0
2012-01-05  2.4         1
2012-01-06  2.3         2
于 2013-02-04T18:45:17.940 回答