pythonic获取索引的方法,值列== 1

Posted

技术标签:

【中文标题】pythonic获取索引的方法,值列== 1【英文标题】:pythonic way to get index,column for value == 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 你想要行和列作为元组吗? 【参考方案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()。

以上是关于pythonic获取索引的方法,值列== 1的主要内容,如果未能解决你的问题,请参考以下文章

具有匹配索引列的多个表的数据框连接值列

如何获取标识值列 - SQL

訪問索引的方法

获取长向量中最小值索引的有效方法,python

基于索引的非重叠滑动窗口

是否有更短的方法来更新 Oracle SQL 上的范围值列?