从中使用元组数据框(),如何在条件下检索每个元组元素的列值?

2024-06-28 11:55:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个pandas.DataFrame,例如:

   1  2  3
1  1  0  0
2  0  1  0
3  0  0  1

从包含以下关系的集合中创建:

^{pr2}$

我试着为这个做等价类。像这样:

[1] = {1}
[2] = {2}
[3] = {3}

到目前为止,我已经做了以下工作:

testGenerator = generatorTest(matrix)
indexCount = 1
while True:
    classRelation, loopCount = [], 1
    iterable = next(testGenerator)
    for i in iterable[1:]:
        if i == 1:
            classRelation.append(loopCount)
        loopCount += 1
    print ("[",indexCount,"] = ",set(classRelation))
    indexCount += 1

正如你所看到的,这是非常混乱的。但我确实得到了或多或少的期望输出:

[ 1 ] =  {1}
[ 2 ] =  {2}
[ 3 ] =  {3}

我怎样才能以更整洁、更像Python的方式完成同样的输出?


Tags: truedataframepandas关系iterablematrixnext等价
2条回答

在这种情况下,您可以使用^{},如:

代码:

df.idxmax(axis=1)

测试代码:

^{pr2}$

结果:

1    1
2    2
3    3
4    2
dtype: int64

考虑数据帧df

 df = pd.DataFrame(np.eye(3, dtype=int), [1, 2, 3], [1, 2, 3])

numpy.where

^{pr2}$

stack和{}

s = df.stack()
s.compress(s.astype(bool)).index.tolist()

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

相关问题 更多 >