访问 pandas value_counts 的第一列

新手上路,请多包涵

我正在尝试使用 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() 输出)所以我不确定如何访问它们。

原文由 emma_391 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 604
2 个回答

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

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

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

它的类型为“Index”,但您可以对其进行迭代:

 for idx in vl_list:
    print(idx)

c
b
a

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

原文由 ayhan 发布,翻译遵循 CC BY-SA 3.0 许可协议

使用熊猫的 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

原文由 Renaud 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题