首页 文章

访问pandas value_counts的第一列

提问于
浏览
4

我正在尝试使用Python的pandas包中的value_counts()函数来查找列中项目的频率 . 这工作并输出以下内容:

57     1811
62      630
71      613
53      217
59      185
68       88
52       70

Name: hospitalized, dtype: int64

其中第一列是项目,右列是列中的频率 .

从那里,我想访问第一列项目并在for循环中迭代 . 我希望能够访问每一行的项目并检查它是否等于另一个值 . 如果是这样,我希望能够访问第二列并将其除以另一个数字 .

我的大问题是从.value_counts()输出访问第一列 . 是否可以访问此列,如果可以,如何访问?这些列没有任何特定的名称(因为它只是value_counts()输出)所以我不确定如何访问它们 .

2 回答

  • 6

    value_counts 返回熊猫系列:

    df = pd.DataFrame(np.random.choice(list("abc"), size=10), columns = ["X"])
    df["X"].value_counts()
    Out[243]: 
    c    4
    b    3
    a    3
    Name: X, dtype: int64
    

    对于单个值的数组,您可以使用Series的索引:

    vl_list = df["X"].value_counts().index
    Index(['c', 'b', 'a'], dtype='object')
    

    它是“索引”类型,但您可以迭代它:

    for idx in vl_list:
        print(idx)
    
    c
    b
    a
    

    或者对于numpy数组,你可以使用 df["X"].value_counts().index.values

  • 7

    使用Panda的iteritems()

    df = pd.DataFrame({'mycolumn': [1,2,2,2,3,3,4]})
    for val, cnt in df.mycolumn.value_counts().iteritems():
        print 'value', val, 'was found', cnt, 'times'
    
    value 2 was found 3 times
    value 3 was found 2 times
    value 4 was found 1 times
    value 1 was found 1 times
    

相关问题