在Pandas时间戳中替换日期

时间:2018-06-08 18:22:05

标签: python pandas dataframe timestamp

我试图从pandas数据帧中获取准确的时间戳。我的文件具有从一天开始以秒为单位的时间戳,并且每个文件在文件名中都有日期。我已经能够使用以下步骤将秒转换为小时和分钟:     df['time'] = pd.to_datetime(df['sec'], unit='s') 然而,YYMMDD开始于时代。我知道时间戳有一个替换功能,但我没有成功地让它工作。有可能让这样的东西起作用吗?

df['month']=month
df['day'] = day
df['year'] = 2018
date = '%s-%s-%s '%(year, month, day) + df['sec']
df['time'] = pd.to_datetime(date, unit='s')

或者如何更改时间戳以保持我想要的小时/分钟/秒,但是根据文件名/其他列更改日期?

1 个答案:

答案 0 :(得分:0)

我们可以将您的第二列转换为纳秒,并通过添加该日期的pd.Timestamp值来添加纳秒数。

pd.to_datetime(df['sec']*(10**9) + pd.Timestamp('the date').value)

完整示例:

import pandas as pd

# Suppose we have a filename such as
fname = '2018-01-01.txt'

# Create a csv-file with col sec and values 0,1000,2000
with open(fname,'w') as f:
    f.write('sec\n0\n1000\n2000')       

# Read dataframe
df = pd.read_csv(fname)

# Create datetime column (fname[:-4] = '2018-01-01')
df['datetime'] = pd.to_datetime(df['sec']*(10**9) + pd.Timestamp(fname[:-4]).value)

print(df)

返回:

    sec            datetime
0     0 2018-01-01 00:00:00
1  1000 2018-01-01 00:16:40
2  2000 2018-01-01 00:33:20