2016-08-24 80 views
1

我有一个带有3个参数“Date”,“Time”和“Value”的表格。我想在每个10分钟后面添加一个新的列,该列中的值对应于“时间”。在Pandas中打印相应的列值

Image

我虽然用秒轻松创建新列。

现在我想要一个新的列假设“x”将有第一个vlaue和只有10分钟后对应于“时间”的值。在这种情况下我们能做什么?

回答

0

IIUC你可以先通过sub删除dateshours,加10 Min,然后转换为miliseconds和划分1000

df = pd.DataFrame({'Time': ['08:01:29:12','08:03:29:12','08:05:29:12'], 
        'Date':['1/2/2016','1/2/2016','1/2/2016']}) 
df['Date'] = pd.to_datetime(df.Date) 
df['Time'] = pd.to_datetime(df.Time, format='%H:%M:%S:%f') 

df['new'] = df.Time.sub(df.Time.values.astype('<M8[h]') + 
      pd.offsets.Minute(10)).astype('timedelta64[ms]')/1000 

print (df) 

     Date     Time  new 
0 2016-01-02 1900-01-01 08:01:29.120 689.12 
1 2016-01-02 1900-01-01 08:03:29.120 809.12 
2 2016-01-02 1900-01-01 08:05:29.120 929.12 

或者:

df['new'] = df.Time.sub(df.Time.values.astype('<M8[h]') + 
      pd.to_timedelta('00:10:00')).astype('timedelta64[ms]')/1000 

print (df) 
     Date     Time  new 
0 2016-01-02 1900-01-01 08:01:29.120 689.12 
1 2016-01-02 1900-01-01 08:03:29.120 809.12 
2 2016-01-02 1900-01-01 08:05:29.120 929.12