Python Как посчитать серию с несколькими элементами в одной строке

f = open("routeviews-rv2-20181110-1200.pfx2as", 'r')
#read file into array, ignore first 6 lines
lines = loadtxt("routeviews-rv2-20181110-1200.pfx2as", dtype='str', 
delimiter = "\t", unpack=False)
#convert to dataframe
df = pd.DataFrame(lines,columns=['IPPrefix', 'PrefixLength', 'AS'])
series = df['AS'].astype(str).str.replace('_', ',').str.split(',')
arr = numpy.array(list(chain.from_iterable(series)))
ASes= pd.Series(numpy.bincount(arr))

ValueError: недопустимый литерал для int () с базой 10: '31133_65500,65501'

Я хочу подсчитывать каждый раз, когда элемент появляется в столбце AS. Однако в некоторых строках есть несколько записей, которые необходимо подсчитать.

См .: Python Найти максимальное значение в столбце фрейма данных для цикла, чтобы найти все значения

Txt файл: http://data.caida.org/datasets/routing/routeviews-prefix2as/2018/11/

Но это не может считаться строкой 67820 ниже.

    Out[94]: df=
              A                 B       C
0             1.0.0.0           24  13335
1             1.0.4.0           22  56203
2             1.0.4.0           24  56203
3             1.0.5.0           24  56203
              ...          ...    ...
67820    1.173.142.0            24  31133_65500,65501
              ...          ...    ...
778719  223.255.252.0           24  58519
778720  223.255.254.0           24  55415

Знак _ не является опечаткой, именно так он отображается в файле.

Desired output.
1335     1
...     ..
31133    1
...     ..
55415    1 
...     ..
56203    3
...     ..
58159    1
...     ..
65500    1
65501    1
...     ..

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

Abdulaziz Al Jumaia 17.11.2018 15:06

«Я ожидал» - это желаемый результат. Я хочу подсчитать появление каждого числа в столбце A.

Jim Hubbard 17.11.2018 15:47
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
118
1

Ответы 1

replace + split + chain

Вы можете заменить _ на ,, разделить и затем связать перед использованием np.bincount:

from itertools import chain

series = df['A'].astype(str).str.replace('_', ',').str.split(',')
arr = np.array(list(chain.from_iterable(series))).astype(int)

print(pd.Series(np.bincount(arr)))

0     0
1     0
2     2
3     4
4     1
5     6
6     1
7     0
8     0
9     0
10    1
dtype: int64

.astype (int) имеет ошибку OverflowError: Python int слишком большой для преобразования в C long .astype ('int64') дал ValueError: недопустимый литерал для int () с базой 10: '' какие-либо предложения?

Jim Hubbard 17.11.2018 18:44

@JimHubbard, у меня отлично работает с предоставленными вами данными (которые, по общему признанию, не включают типы). Вы можете попробовать предоставить минимальный воспроизводимый пример, см. Как сделать хорошие воспроизводимые примеры панд.

jpp 17.11.2018 18:44

Я знаю, это был образец. Длина моего файла: 778721.. с номерами, близкими по величине.

Jim Hubbard 17.11.2018 18:46

@JimHubbard, Ага, без репрезентативных данных сложно помочь. Если вы сможете найти строку, вызывающую проблемы, это даст мне возможность отладить ее.

jpp 17.11.2018 18:47

Извини за это. Фактический df я предоставил выше. В предыдущем примере я не учитывал длину. Обратите внимание, что теперь это столбец C, извините за путаницу.

Jim Hubbard 17.11.2018 19:04

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

jpp 17.11.2018 19:16

Я играл с ней весь день. Не могу изолировать. Попробовал отладить и потерялся в слоях. Прикрепил ссылку в вопросе с текстовым файлом (routeviews-rv2-20181110-1200). Обратите внимание на обновленный код.

Jim Hubbard 19.11.2018 03:33

есть новые предложения?

Jim Hubbard 20.11.2018 17:24

Другие вопросы по теме