Для подсчета измерений в CSV на основе метки времени - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть файл CSV, который имеет следующий формат:

device_id,timestamp,measurement_name,measurement_value
0ea7f78a-d224-4d3a-a014-001a0794e746,2019-05-30 12:00:55.438,temperature,21.7
0ea7f78a-d224-4d3a-a014-001a0794e746,2019-05-31 21:15:11.038,humidity,73.9
8ac23d27-8747-408f-89d7-c84b827a7776,2019-05-30 08:00:51.713,temperature,21.7
0ea7f78a-d224-4d3a-a014-001a0794e746,2019-05-31 17:00:45.338,temperature,21.7
0ea7f78a-d224-4d3a-a014-001a0794e746,2019-05-31 04:00:02.298,humidity,51.8
8ac23d27-8747-408f-89d7-c84b827a7776,2019-05-31 23:00:57.190,humidity,68.5
8ac23d27-8747-408f-89d7-c84b827a7776,2019-05-30 00:00:31.007,temperature,21.7

Я пытаюсь подсчитать измерения в этом CSV из командной строки, которая меньше, чем конкретная временная метка в этом CSV, например, : start_ts = 2019-05-30 12: 00: 55.438 end_ts = 2019-05-31 23: 00: 57.190

Я попробовал следующий код, чтобы сделать это

import pandas as pd
import sys


def process_start_ts_data(action, start_ts):
    df = pd.read_csv('my_data.csv')
    gf = df.groupby('timestamp')
    r = gf.describe()

    my_dict = r.to_dict()

    if action == 'cnt' and start_ts == sys.argv[2]:
        result_meas = my_dict[('measurement_value', 'count')][start_ts]
        print("The minimum value of the measurement at %s is %s :", (start_ts, result_meas))


def process_end_ts_data(action, end_ts):
    df = pd.read_csv('my_data.csv')
    gf = df.groupby('timestamp')
    r = gf.describe()

    my_dict = r.to_dict()

    if action == 'cnt' and end_ts == sys.argv[3]:
        result_meas = my_dict[('measurement_value', 'count')][end_ts]
        print("The minimum value of the measurement at %s is %s :", (end_ts, result_meas))



def main():
    script = sys.argv[0]
    # print script
    action = sys.argv[1]
    start_timestamp = sys.argv[2]
    end_timestamp = sys.argv[3]

    process_start_ts_data(action, start_timestamp)
    process_end_ts_data(action, end_timestamp)


if __name__ == '__main__':
    main()

Но это не дает мне требуемый вывод. Может ли кто-нибудь помочь мне здесь?

...