将带有标签的 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 编码错误

在写入Excel时,“解析”一个pandas多索引

按索引选择行 - Pandas loc - 任何缺失的标签

熊猫:选择行 - 基于列表 - 带有重复行标签的 DF

将具有多个标签的值写入 influxDB(使用 python)

Pandas:如何绘制带有标签的数据框的条形图?