我正在尝试将一些数据从CSV转换到InfluxDB线路协议。
首先,我正在处理的数据集如下所示:
date time latency
2021-02-02 16:11:15,486 78
2021-02-02 16:16:15,592 94我想以这样的方式结束:
some_category latency=78 1612369423.956387到目前为止,我已经得到了以下代码,但我还在研究如何根据行协议的要求将datetime对象导出为划时代的时间。我对这里的熊猫文件感到有点困惑。
import pandas as pd
df = pd.read_csv("processed.csv",
delim_whitespace=True,
# Treat columns 0 and 1 as a single datetime object.
parse_dates=[[0, 1]])
lines = ['some_category'
+ ' '
+ 'latency=' + df['latency'].apply(str)
+ ' '
+ df['date_time'].apply(str)]发布于 2021-02-21 22:00:25
据我理解,问题中所指定的小数点的最后时间戳格式实际上并不是你想要的。如果您想遵循进水数据库线路协议(引用进水数据库文档),则时代时间应该是ns中指示时间的整数。
假设在读取csv文件时使用了默认的date_parser,要将datetime对象转换为纪元时间,您应该执行对象到int的转换,如下所示:
lines = ['some_category'
+ ' '
+ 'latency=' + df['latency'].apply(str)
+ ' '
+ df['date_time'].astype(int).apply(str)]之后,列表“ like ”的内容应该如下所示:
some_category latency=78 1612282275486000000
some_category latency=94 1612282575592000000现在,如果我们想知道这是否有效,我们可以形成进水数据库线路协议导出文件test_db.db,该文件可被流入CLI消化,其内容如下:
# INFLUXDB EXPORT: 1677-09-21T01:06:11+00:53 - 2262-04-12T00:47:16+01:00
# DDL
CREATE DATABASE test_db WITH NAME autogen
# DML
# CONTEXT-DATABASE:test_db
# CONTEXT-RETENTION-POLICY:autogen
# writing wal data
some_category latency=78 1612282275486000000
some_category latency=94 1612282575592000000...then让我们使用导入命令:
influx -import -path=test_db.db&检查流入实例中是否正确地写入了数据点:
use test_db
Using database test_db
precision rfc3339
select * from /.*/
name: some_category
time latency
---- -------
2021-02-02T16:11:15.486Z 78
2021-02-02T16:16:15.592Z 94https://stackoverflow.com/questions/66031630
复制相似问题