2017-09-30 64 views
0

我有這個[3526 rows x 5 columns] DF,其中col0是時間,col1-col3是標籤和col4是我的價值。寫熊貓DF帶標籤influxdb

    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) 

之後,我得到錯誤Must be DataFrame with Datetime or PeriodIndex

但是,如果我這樣做插入使用此逐行...

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) 

這應該解決這個問題的索引。