Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何根据日期创建单独的跟踪列?_Python_Pandas - Fatal编程技术网

Python 如何根据日期创建单独的跟踪列?

Python 如何根据日期创建单独的跟踪列?,python,pandas,Python,Pandas,我有一个数据帧,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): 我尝试使用np.arange(),但无法集中到所需的行。日期列设置为索引(df) 谢谢。我认为最简单的方法是分两

我有一个数据帧,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):

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


谢谢。

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

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

安迪,谢谢你的帮助。df目前实际上是一个系列。当我做df['tracking']=pd.np.arange(len(df))时,我得到了“跟踪不在本系列中!”我该怎么处理?谢谢。你可以简单地把它变成一个数据帧:
df=pd.DataFrame(df)
:)注意:只调用DataFrames-df可能是一个很好的做法!同意。这真的很有帮助。谢谢。作为实践,在进行连接和合并时,我是否应该将系列转换为一列DF?或者这真的是一个个案基础吗?@user1911092我不确定我是否理解这个问题,你不能只使用数据帧进行连接吗?也许这应该是另一个问题。
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