python - 向 Pandas 数据框添加固定日期

标签 python pandas

我正在读取一些数据并使用 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/

相关文章:

python - 使用FigureCanvasQTAgg时不同的DataFrame绘图行为

python - 获取一长串项目并将其 reshape 为数据框 "rows"- pandas python 3

python - 持续检测到 Django 1.7.2 迁移更改

python - mySql 数据库在 0x104e18ea0 处有 sqlite3.Cursor 对象作为表中的输出

python - Ruby:变量和赋值的语义类似于 Python 的?

python - 从 Python (pandas) 的日期列中获取周开始日期(星期一)?

python - 根据Python中的日期提取和 reshape 数据

python pandas 基于列值的子字符串

python - 如何从我的数据集中拆分 'Hour' 和 'Minute'

python - 用 beautifulsoup 中的链接拆分一个逗号分隔的列表