【问题标题】:Getting highest value out of a dataframe with value_counts()使用 value_counts() 从数据框中获取最高值
【发布时间】:2021-10-01 06:30:09
【问题描述】:

我想从我的数据框中打印出最高的而非唯一值。 使用 df['Value'].value_counts() 我可以计算它们,但我如何通过数字出现的频率来选择它们。

Value
1
2
1
2
3
2

【问题讨论】:

  • 我的表是一个不好的例子,因为 2 在我的情况下是第二高的值,也是最常见的值。在这种情况下,您的回答会有所帮助。但是,如果 1 是最常见的一个,而 3 是最高的,则您所链接的问题没有解决方案。
  • 在这种情况下,您希望答案为 3,因为它是最大值,对吧?
  • 我想检查数据框中的最高值是否超过一次,如果是,我只想打印它。如果不是,我想检查第二高值是否在我的数据框中超过一次。
  • 我想我明白了。你可以在下面看到我的答案。

标签: python dataframe


【解决方案1】:

据我了解,您想要频率大于 1 的第一个最大值。在这种情况下,您可以编写,

for val, cnt in df['Value'].value_counts().sort_index(ascending=False).iteritems():
  if cnt > 1:
    print(val)
    break

sort_index 按“值”而不是频率对项目进行排序。例如,如果您的“值”列具有值 [1, 2, 3, 3, 2, 2,2, 1, 3, 2] 那么df['Value'].value_counts().sort_index(ascending=False).iteritems() 的结果将如下所示,

3    3
2    5
1    2
Name: Value, dtype: int64

本例中的答案将是 3,因为它是频率大于 1 的第一个最大值。

【讨论】:

  • 我想要这个组合。例如,如果最大值在数据框中只有一次,而第二高的两次我想打印出第二高的。
  • 我已经编辑了上面的答案。你可以检查一下。
  • 谢谢。正是我想要的
  • Andascending=True 给了我频率大于 1 的最小值?
  • 是的,然后它会以相反的顺序循环。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-05
  • 1970-01-01
  • 2015-12-26
  • 2012-11-05
  • 2018-07-18
相关资源
最近更新 更多