我有一个pandas.DataFrame
,例如:
1 2 3
1 1 0 0
2 0 1 0
3 0 0 1
它是从包含以下关系的集合创建的:
{(1,1),(2,2),(3,3)}
我正在尝试为此创建等价类。像这样的事情:
[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}
如何以更整洁、更Pythonic的方式完成相同的输出?
最佳答案
在这种情况下,您可以使用 pandas.DataFrame.idxmax()
像:
代码:
df.idxmax(axis=1)
测试代码:
df = pd.DataFrame([[1, 0, 0], [0, 1, 0], [0, 0, 1], [0, 1, 0]],
columns=[1, 2, 3], index=[1, 2, 3, 4])
print(df.idxmax(axis=1))
结果:
1 1
2 2
3 3
4 2
dtype: int64
关于python - 使用 df.itertuples() 中的元组,如何在条件下检索每个元组元素的列值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44184081/