Python在dataframe列中查找最大值以循环查找所有值

时间:2018-11-09 18:56:19

标签: python python-3.x pandas numpy dataframe

所以我有一个大数据框,使用熊猫。

当我执行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 :(得分:2)

value_countsdf.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 一起使用

<div class="gr-16" id="menu">
    <nav id="navbar">
        <a href="#">Home</a>
        <a href="#">Programers</a>
        <a href="#">Request Program</a>
    </nav>
    <a href="#" id="logocont">
        <img id="logo" src="images/mylogo21.png" alt="Logo" runat="server" />
    </a>
</div>

答案 1 :(得分:2)

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