Как сделать фрагменты из кадра данных, где столбец равен значению - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть два набора данных CSV.Один содержит два столбца (время и логический флаг), а другой набор данных содержит некоторую информацию. У меня есть некоторые графические функции, которые я хотел бы визуально отобразить.Данные отбираются на разных частотах, поэтому количество строк может не совпадать для наборов данных.Как построить отдельные графики для диапазона данных, где булево значение истинно?

Вот как выглядят контактные данные:

INDEX | TIME | CONTACT
0 | 240:18:59:31.750 | 0
1 | 240:18:59:32.000 | 0
2 | 240:18:59:32.250 | 0
........
1421 | 240:19:05:27.000 | 1
1422 | 240:19:05:27.250 | 1 

Другие (данные о транспортных средствах) не очень важныно содержит такие значения, как вес, скорость (MPH), положение педали и т. д.

У меня есть много отдельных больших файлов Excel, и поскольку формы не совпадают, я не уверен, как разделить данные на части с помощью флагов времени, поэтому я сделалниже приведена функция для создания диапазонов, но я думаю, что это можно сделать более простым способом.

Вот рабочий код (с выводом ниже).Короче говоря, есть ли более простой способ сделать это?

def determineContactSlices(data):
contactStart = None
contactEnd = None
slices = pd.DataFrame([])
for index, row in data.iterrows():
    if row['CONTACT'] == 1:
        # begin slice
        if contactStart is None:
            contactStart = index
            continue
        else:
            # still valid, move onto next
            continue
    elif row['CONTACT'] == 0:
        if contactStart is not None:
            contactEnd = index - 1
            # create slice and add the df to list
            slice = data[contactStart:contactEnd]
            print(slice)
            slices = slices.append(slice)
             # then reset everything
            slice = None
            contactStart = None
            contactEnd = None
            continue
        else:
            # move onto next row
            continue
return slices

Вывод: ([15542 строк x 2 столбца])

Index Time  CONTACT
1421   240:19:05:27.000        1
1422   240:19:05:27.250        1
1423   240:19:05:27.500        1
1424   240:19:05:27.750        1
1425   240:19:05:28.000        1
1426   240:19:05:28.250        1

            ...      ...
56815  240:22:56:15.500        1
56816  240:22:56:15.750        1
56817  240:22:56:16.000        1
56818  240:22:56:16.250        1
56819  240:22:56:16.500        1

С этим выводом я намерен пройти через каждыйВременной интервал и отображение данных транспортного средства в подзадачах.

Любая помощь или руководство будет высоко ценится (:

ОБНОВЛЕНИЕ:

Я думаю, я могу просто сделать filteredData = vehicleData[contactData['CONTACT'] == 1], нозатем я сталкиваюсь с тем, как вести график индивидуально, когда есть разъединение. Например, если есть 7 соединений разного времени и длины, я бы хотел иметь 7 отдельных графиков для графика.

1 Ответ

0 голосов
/ 19 декабря 2018

Я думаю, что вы пытаетесь сделать относительно просто, хотя я не уверен, понимаю ли я, какой результат вы хотите получить, или что вы хотите с ним сделать после того, как он у вас есть.Например:

contact_df = data[data['CONTACT'] == 1]
non_contact_df = data[data['CONTACT'] == 0]

Если это не поможет, пожалуйста, предоставьте некоторые дополнительные сведения о том, как должен выглядеть результат и что вы планируете делать с ним после его создания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...