将带有标签的 pandas DF 写入 influxdb
Posted
技术标签:
【中文标题】将带有标签的 pandas DF 写入 influxdb【英文标题】:Write pandas DF with tags to influxdb 【发布时间】:2018-03-12 09:53:45 【问题描述】:我有这个[3526 rows x 5 columns]
DF,其中col0
是时间,col1-col3
是标签,col4
是我的值。
0 1 2 3 4
0 2017-09-29 22:41:51 10.2.95.5 C1195_LF470_SARF 0.0.1.1 11993
1 2017-09-29 22:41:37 10.2.52.7 CF643_RCZ70_SARM 0.0.1.16 12102
2 2017-09-29 22:41:39 10.2.102.7 C1345_BQS70_SARF 0.0.1.17 18173
3 2017-09-29 22:41:41 10.2.23.212 CN165_FS470_SAR8 0.0.0.7 23525
4 2017-09-29 22:41:38 10.2.96.4 CF832_UY570_SARM 0.0.1.4 6162
所以,我想将该 DF 写入 influxdb。我会的……
timeValues = df[ ['col0','col4'] ]
tags = 'col1': df[['col1']], 'col2': df[['col2']], 'col3':df[['col3']]
dbConnDF = DataFrameClient(dbAddress, dbPort, dbUser, dbPassword, dbName)
dbConnDF.write_points(dbName, tbName, timeValues, tags = tags)
然后,我得到错误
必须是带有 Datetime 或 PeriodIndex 的 DataFrame
但是,如果我使用这个逐行插入...
dbConnQRY = InfluxDBClient(dbAddress, dbPort, dbUser, dbPassword, dbName)
dbConnQRY.write_points(bodyDB)
在哪里:
bodyDB = [
"measurement": tbName,
"tags":
"col1": col1,
"col2": col2,
"col3": col3
,
"time": col0,
"fields":
"col4": col4
]
...我完全没有错误。因此,当我尝试一次插入整个 DF 时,就会出现问题。
如何告诉 influxdb col0
是我的索引以避免错误?
谢谢!
【问题讨论】:
【参考方案1】:Create an index column for dataframe
timeValues = df[ ['col4'] ]
timeValues.index = df[ ['col0'] ]
紧随其后
dbConnDF = DataFrameClient(dbAddress, dbPort, dbUser, dbPassword, dbName)
dbConnDF.write_points(dbName, tbName, timeValues, tags = tags)
这应该可以解决索引问题。
【讨论】:
以上是关于将带有标签的 pandas DF 写入 influxdb的主要内容,如果未能解决你的问题,请参考以下文章
将 pandas df 写入 csv 时出现 Unicode 编码错误