【问题标题】:pythonic way to get index,column for value == 1pythonic获取索引的方法,值列== 1
【发布时间】:2015-10-09 20:07:43
【问题描述】:

我目前有一个 MxN 数据框,其中包含优化问题的解决方案。 {M} 中的 i 和 {N} 对中的 i 的“活动”i,j 用 1 表示,而“非活动”对用 0 表示。我需要确定所有活动单元格的 i,j 值,希望避免 for 循环索引或列。

这是一个例子:

In [73]: sol_df
Out[73]:

    1    2    3   4   5
1   0    0    1   0   0
2   1    0    0   0   0
3   0    1    0   0   0
4   0    0    0   0   0 

在这种情况下,我需要的是一个对列表(元组可以):

[(1,3), (2,1), (3,2)]

有办法吗?

谢谢!

一个。

编辑:解释不清楚 EDIT2:我的解释还不清楚

【问题讨论】:

  • 你试过your_dataframe == 1吗?还是您希望将结果作为元组列表?
  • 我认为这是 this question 的副本。试试df[df == 1].index.tolist()
  • @Mauris,好像可以,我试试。 tobias_k,好像 Mauris 和你在同一页上。我会回复你的。
  • @Mauris, set(df[df == 1].index.tolist()) == set(df.index.tolist()) 产生真。我会尝试你的第一个建议,我认为这可能就是我想要的。
  • @misterte 你想要行和列作为元组吗?

标签: python pandas


【解决方案1】:
>>> import numpy
>>> a = numpy.array([[1, 0, 1], [0, 1, 1], [0, 1, 0]])
>>> numpy.transpose(numpy.nonzero(a))
array([[0, 0],
       [0, 2],
       [1, 1],
       [1, 2],
       [2, 1]])

【讨论】:

  • 正是这个。谢谢!
  • 对于任何使用数据框的人,请先使用 df.as_matrix()。
猜你喜欢
  • 1970-01-01
  • 2016-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-05
  • 2020-03-02
  • 2012-01-10
  • 2023-03-04
相关资源
最近更新 更多