将带有标签的pandas DF写入Influxdb

时间:2017-09-30 20:15:39

标签: python-3.x pandas influxdb influxdb-python

我有[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 个答案:

答案 0 :(得分:2)

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)

这应解决索引问题。