Объединить указанные c массивы и отсортировать их - PullRequest
1 голос
/ 26 апреля 2020

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

Вот код:

import numpy as np

with open('dblp-2020-04-01.xml','r' , encoding="ISO-8859-1") as f:
   for i, line in enumerate(f):
    if "<year>" in line:

        data = line[6:10]
        data_list = np.array([data])
        print(data_list)

Желаемый результат:

['2010']
['2002']
['1992']
['2002']
['1994']
  ...

1 Ответ

0 голосов
/ 26 апреля 2020

Вам нужно создать np.array за пределами вашего for-l oop и, наконец, добавить к нему все даты:

with open('dblp-2020-04-01.xml', 'r', encoding="ISO-8859-1") as f:
    data_list = np.array([])
    for i, line in enumerate(f):
        if "<year>" in line:
            data = line[6:10]
            data_list = np.append(data_list, data)
    print(data_list)

И результат будет

['2010', '2002', '1992', '2002', '1994']

Наконец, вы можете отсортировать массив, используя numpy.sort():

np.sort(data_list) # Ascending order
>>> ['1992', '1994', '2002', '2002', '2010']

ОБНОВЛЕНИЕ

Хорошо, так учитывая сценарий, который вы описываете в комментариях, я бы сказал, что наиболее эффективный способ получить счет за дату из ваших XML данных - это загрузить XML в pandas фрейм данных и, наконец, используйте

df['yourDatesColumn'].groupby('yourDatesColumn').count()

или

df['yourDatesColumn'].value_counts()

, чтобы получить счет за дату.

В качестве альтернативы, вы можете создать объект pandas.Series просто для столбца даты (если вы не хотите загружать все данные в pandas кадр данных).

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