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






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: '' какие-либо предложения?
@JimHubbard, у меня отлично работает с предоставленными вами данными (которые, по общему признанию, не включают типы). Вы можете попробовать предоставить минимальный воспроизводимый пример, см. Как сделать хорошие воспроизводимые примеры панд.
Я знаю, это был образец. Длина моего файла: 778721.. с номерами, близкими по величине.
@JimHubbard, Ага, без репрезентативных данных сложно помочь. Если вы сможете найти строку, вызывающую проблемы, это даст мне возможность отладить ее.
Извини за это. Фактический df я предоставил выше. В предыдущем примере я не учитывал длину. Обратите внимание, что теперь это столбец C, извините за путаницу.
Я до сих пор не вижу причин, по которым мой код не должен работать с вашими данными. Было бы полезно, если бы вы могли отлаживать и изолировать один ряд, вызывающий у вас проблемы.
Я играл с ней весь день. Не могу изолировать. Попробовал отладить и потерялся в слоях. Прикрепил ссылку в вопросе с текстовым файлом (routeviews-rv2-20181110-1200). Обратите внимание на обновленный код.
есть новые предложения?
Пожалуйста, поставьте желаемый результат. Для описания вашей программы необходимы более подробные сведения.