首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >替换Pandas时间戳中的日期

替换Pandas时间戳中的日期
EN

Stack Overflow用户
提问于 2018-06-09 02:22:05
回答 1查看 1.7K关注 0票数 0

我正在尝试从熊猫数据帧中获取准确的时间戳。我的文件有从一天开始到现在的时间戳,每个文件在文件名中都有日期。我已经能够使用:df['time'] = pd.to_datetime(df['sec'], unit='s')将秒转换为小时和分钟,但是YYMMDD从纪元开始。我知道timestamp有一个替换函数,但我一直没有成功地让它工作。有没有可能让这样的东西工作呢?

代码语言:javascript
复制
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')

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-09 03:01:23

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

代码语言:javascript
复制
pd.to_datetime(df['sec']*(10**9) + pd.Timestamp('the date').value)

完整示例:

代码语言:javascript
复制
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)

返回:

代码语言:javascript
复制
    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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50766416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档