Python Find max в столбце dataframe для цикла, чтобы найти все значения - PullRequest
0 голосов
/ 09 ноября 2018

Итак, у меня есть большой фрейм данных, использующий панд.

Когда я делаю max(df['A']), он сообщает о максимуме 9999, когда он должен быть 396450 по наблюдениям.

import numpy as numpy
import pandas as pd

f = open("20170901.as-rel2.txt", 'r')
#read file into array, ignore first 6 lines
lines = loadtxt("20170901.as-rel2.txt", dtype='str', comments="#", delimiter="|", unpack=False)
#ignore col 4
lines=lines[:, :3]
#convert to dataframe
df = pd.DataFrame(lines, columns=['A', 'B', 'C'])

После нахождения максимума я должен подсчитать каждый node(col 'A') и сказать, сколько раз он повторяется.

Вот пример файла:

df=
                 A       B   C
    0            2   45714   0
    1            2   52685  -1
    2            3     293   0
    3            3   23248  -1
    4            3  133296   0
    5            3  265301  -1
    6            5   28599  -1
    7            5   52352   0
    8            5  262879  -1
    9            5  265048  -1
    10           5  265316  -1
    11          10   46392   0
    .....
    384338  396238   62605  -1
    384339  396371    3785  -1
    384340  396434   35039  -1
    384341  396450    2495  -1
    384342  396450    5078  -1

    Expect:
    [1, 0
    2, 2
    3, 4
    4, 0
    5, 5
    10, 1
    ....]

Я собирался запустить цикл for, равный i <= maxvalue (максимальное значение превышает количество строк). и использовать счетчик. Какой метод наиболее эффективен?

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

np.bincount

pd.Series(np.bincount(df.A))

0     0
1     0
2     2
3     4
4     0
5     5
6     0
7     0
8     0
9     0
10    1
dtype: int64
0 голосов
/ 09 ноября 2018

Использование Categorical с value_counts

df.A=pd.Categorical(df.A,categories=np.arange(1,max(df.A)+1))
df.A.value_counts().sort_index()
Out[312]: 
1    0
2    2
3    4
4    0
5    5
6    0
7    0
8    0
9    0
Name: A, dtype: int64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...