Разделить динамические структурированные данные - PullRequest
1 голос
/ 06 марта 2019

У меня большой объем данных (около 20 тыс. Строк), как показано ниже.

Caller1 5:30AM Mexico USA 2-22-19
Caller2 1:30AM Mexico USA 2-22-19
Caller3 2:30AM Mexico USA 2-22-19
Caller1 5:30AM Mexico USA 2-22-19
Caller5 3:30AM Mexico USA 2-22-19
Caller3 4:30AM Mexico USA 2-22-19
Caller2 5:30AM Mexico USA 2-22-19
Caller1 7:30AM Mexico USA 2-22-19
Caller12 9:39AM Mexico USA 2-22-19
Caller14 8:36AM Mexico USA 2-22-19
Caller15 2:39AM Mexico USA 2-22-19
Caller16 3:32AM Mexico USA 2-22-19

Я ищу способ разделения данных на основе CallerID, как показано ниже:

Caller1 5:30AM Mexico USA 2-22-19
Caller1 5:30AM Mexico USA 2-22-19
Caller1 7:30AM Mexico USA 2-22-19
---------------------------------
Caller2 1:30AM Mexico USA 2-22-19
Caller2 5:30AM Mexico USA 2-22-1
---------------------------------
.
.

Я изначально имел обыкновение хранить эти данные как dictionary, и любые новые данные были добавлены в этот словарь

У меня проблемы с разделением, так как начальный параметр CallerID также является переменной.

Мой код:

>>> input = [('caller1', 'data....'),('caller2','data,,,,,)
>>> from collections import defaultdict
>>> res = defaultdict(list)
>>> for v, k in input: res[k].append(v)

Я не могу использовать это, так как набор данных слишком велик

Существуют ли в Python пакеты, которые будут разделять данные на основе первого слова предложения?

1 Ответ

0 голосов
/ 06 марта 2019

Вы можете попробовать этот подход, сохранить данные в словаре списка с ключом в качестве строки, с которой вы хотите сгруппировать, например, Caller1, Caller2 и т. Д.

     data = ["Caller1 5:30AM Mexico USA 2-22-19",
            "Caller2 1:30AM Mexico USA 2-22-19",
            "Caller3 2:30AM Mexico USA 2-22-19",
            "Caller1 5:30AM Mexico USA 2-22-19",
            "Caller5 3:30AM Mexico USA 2-22-19",
            "Caller3 4:30AM Mexico USA 2-22-19",
            "Caller2 5:30AM Mexico USA 2-22-19",
            "Caller1 7:30AM Mexico USA 2-22-19",
            "Caller12 9:39AM Mexico USA 2-22-19",
            "Caller14 8:36AM Mexico USA 2-22-19",
            "Caller15 2:39AM Mexico USA 2-22-19",
            "Caller16 3:32AM Mexico USA 2-22-19"]

    grouped_data = {}

    # ITERATE THE INPUT AND STORE DATA WITH KEY IN DICTIONARY OF LIST 
    for x in data:
        temp: list = []
        key = x.split(' ')[0]
        if key in grouped_data:
            temp = grouped_data.get(key)
        temp.append(x)
        grouped_data[key] = temp

    # PRINT THE DATA AS GROUPED
    for k, v in grouped_data.items():
        print(f"data for {k}")
        for d in v:
            print(d)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...