我正在读取一些数据并使用 from_records 创建数据框,其中数据包含文本时间戳 HH:MM:SS:000000。我可以使用 pd.to_datetime(data.timestamp, format='%H:%M:%S:%f')
转换为时间序列。我从文件名知道文件的日期。什么是插入日期(并最终将其设置为索引)的 pythonic 和高性能方法?
数据看起来像:
12:00:00:000000 100
12:00:01:123456 200
12:00:02:000000 300
没有插入日期,我得到的数据框如下所示:
1900-01-01 12:00:00.000000 100
1900-01-01 12:00:01.123456 200
1900-01-01 12:00:02.000000 300
我想要的是(给定 date = datetime.date(2017, 6, 28)
:
2017-06-28 12:00:00.000000 100
2017-06-28 12:00:01.123456 200
2017-06-28 12:00:02.000000 300
pd.to_datetime
origin
arg 听起来像我想要的,但它需要输入数字时间戳而不是字符串。
最佳答案
您可以通过 strftime
从日期创建字符串并将其添加到 time
列:
df['datetime'] = pd.to_datetime(date.strftime('%Y-%m-%d ') + df['time'],
format='%Y-%m-%d %H:%M:%S:%f')
print (df)
time A datetime
0 12:00:00:000000 100 2017-06-28 12:00:00.000000
1 12:00:01:123456 200 2017-06-28 12:00:01.123456
2 12:00:02:000000 300 2017-06-28 12:00:02.000000
对于索引:
df.index = pd.to_datetime(date.strftime('%Y-%m-%d ') + df['time'],
format='%Y-%m-%d %H:%M:%S:%f')
print (df)
time A
time
2017-06-28 12:00:00.000000 12:00:00:000000 100
2017-06-28 12:00:01.123456 12:00:01:123456 200
2017-06-28 12:00:02.000000 12:00:02:000000 300
另一种解决方案:
date = datetime.date(2017, 6, 28)
days = date - datetime.date(1900, 1, 1)
df['datetime'] = pd.to_datetime(df['time'],format='%H:%M:%S:%f') +
pd.to_timedelta(days, unit='d')
print (df)
time A datetime
0 12:00:00:000000 100 2017-06-28 12:00:00.000000
1 12:00:01:123456 200 2017-06-28 12:00:01.123456
2 12:00:02:000000 300 2017-06-28 12:00:02.000000
关于python - 向 Pandas 数据框添加固定日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44804784/