【问题标题】:Search for value in a panel在面板中搜索值
【发布时间】:2014-09-14 12:42:46
【问题描述】:

我正在使用 pandas 库,并且有一个 panel object 的实例。我想找到等于 0 的元素数。因此我尝试使用 count 命令:

panel.count(0)

但是,这会返回轴 0 内的 df 数,我想找到面板的每个 df 内等于零的 元素数。有没有内置命令可以做到这一点?谁能帮帮我?

【问题讨论】:

  • 什么样的面板?你试过什么?
  • 嗨 amgaera,我真的不明白你的意思是什么面板......?我尝试了不同的命令,例如value_counts(面板)。
  • 什么是panel?这不是一个常见的技术术语,这是一个没有意义的词。对于您的问题,我们没有上下文。请发布相关代码以及您尝试做的事情(向我们展示,不要在理论上告诉我们)
  • 好的,我明白了。这是一个熊猫面板。这有帮助吗?我可以展示我已经尝试过的所有方法。但是,由于我认为应该有一个非常简单的解决方案(命令),所以我认为它只会在显示所有方法时导致混乱。
  • 将您的代码编辑为答案和所需的输出(不是所需的操作,实际解决方案应该是什么)。我现在明白了这个问题,但是可能会出现对熊猫有更多了解的人,并且您希望他也能在不阅读所有 cmets 的情况下得到它。只需编辑“我正在使用 pandas 库,这是我的代码...”*<code>*“我正在尝试从 Panel 对象中获取值,并期望得到:”*<code>*。 “我尝试使用 count,但它会做这个和那个。有人可以帮我吗?”

标签: python-3.x pandas


【解决方案1】:

您可以使用.sum()(并且轴参数控制您要汇总的DataFrame切片):

In [11]: p = pd.Panel([[[1, 1]], [[1, 2]], [[1, 2]]])

In [12]: (p == 1).sum(axis=0)
Out[12]:
   0  1
0  3  1

In [13]: (p == 1).sum(axis=1)  # this is the default: .sum()
Out[13]:
   0  1  2
0  1  1  1
1  1  0  0

In [14]: (p == 1).sum(axis=2)
Out[14]:
   0  1  2
0  2  1  1

你可能想总结一下,这个系列(我不认为你可以一个人完成这部分??):

In [15]: (p == 1).sum(axis=0).sum(axis=0)
Out[15]:
0    3
1    1
dtype: int64

要找到等于 0 的项目总数,我会使用 np.sum(尽管您可以使用 .sum().sum().sum()):

In [21]: np.sum((p == 1).values)
Out[21]: 4

注意:令人惊讶的是,这里需要 .values。

【讨论】:

  • 谢谢安迪·海登。 np.sum((p==1).values) 完美!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-08
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
  • 2018-05-13
  • 1970-01-01
相关资源
最近更新 更多