获取索引的pythonic方法,列的值==1
我目前有一个MxN数据帧,其中包含一个优化问题的解决方案。{M}对中的i的“活动”i、j和{N}对中的j由1表示,“非活动”对由0表示。我需要确定所有活动单元格的I,j值,希望避免索引或列上的for循环 这将是一个例子:获取索引的pythonic方法,列的值==1,python,pandas,Python,Pandas,我目前有一个MxN数据帧,其中包含一个优化问题的解决方案。{M}对中的i的“活动”i、j和{N}对中的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
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
在这种情况下,我需要的是一个成对的列表(元组可以):
有办法吗
谢谢
A
编辑:解释不清楚
编辑2:我的解释还不清楚你试过你的数据框==1吗?或者你想把结果作为元组列表?我想这是。试试
df[df==1].index.tolist()
@Mauris,这样行得通,我试试看。tobias_k,看起来Mauris和你在同一页上。我会给你回电话的。@Mauris,set(df[df==1]。index.tolist())==set(df.index.tolist())生成True。我会试试你的第一个建议,我想这可能就是我想要的。@misterte你想把行和列作为元组吗?你试过你的数据框==1了吗?或者你想把结果作为元组列表?我想这是。试试df[df==1].index.tolist()
@Mauris,这样行得通,我试试看。tobias_k,看起来Mauris和你在同一页上。我会给你回电话的。@Mauris,set(df[df==1]。index.tolist())==set(df.index.tolist())生成True。我会试试你的第一个建议,我想这可能就是我想要的。@misterte你想要行和列作为元组吗?正是这个。谢谢对于任何使用数据帧的人,首先使用df.as_matrix()。正是这样。谢谢对于使用数据帧的任何人,请首先使用df.as_matrix()。
>>> 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]])
>>> 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]])