我试图从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')
或者如何更改时间戳以保持我想要的小时/分钟/秒,但是根据文件名/其他列更改日期?
答案 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