将InfluxDB的测量结果导出到Pandas Dataframe,并将标签作为自己的列。

问题描述 投票:0回答:1

我对Python相当陌生,我有一个InfluxDB查询,我想把它设置为一个pandas数据框架。然而,输出似乎只包括测量值,而不包括标签值。

我的代码如下所示。

import pandas as pd
from influxdb import InfluxDBClient

def main():

    host = 'localhost'
    port = 8086
    user = 'abc'
    password = 'xyz'
    dbname = 'rain_rate'


    client = InfluxDBClient(host, port, user, password, dbname)
    print("Influx Connected")

    q = 'SELECT * FROM "rain_rate" WHERE time > now() - 24h GROUP BY "location", "site_id";'

    df = pd.DataFrame(client.query(q).get_points())
    print(df)


if __name__ == '__main__':
    main() 

当我打印数据框时,输出只在列中显示测量值和数据点,但标签值 "location "和 "site_id "不在数据框中。

我怎样才能让这2个标签值和测量值一起作为单独的列出现在数据框结果中?

先谢谢你

python pandas dataframe influxdb
1个回答
0
投票

在查询中加入 select * from 并将你的实际查询作为一个子查询。

试试这个

'SELECT * FROM (SELECT * FROM "rain_rate" WHERE time > now() - 24h GROUP BY "location", "site_id");'

当你这样做的时候,外部查询会将所有的标签转换为字段,因此它将被转换为数据框架中的列。

© www.soinside.com 2019 - 2024. All rights reserved.