python - 使用 df.itertuples() 中的元组,如何在条件下检索每个元组元素的列值?

标签 python python-3.x pandas dataframe

我有一个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/

相关文章:

Python时间延迟

python - 如何在pyqt中将数据从对话框窗口检索到主窗口?

python - 更改多个列名但不是全部 - Pandas Python

python - 在 pandas df 中查找 timedelta 对象的均值和标准差

python - Pandas read_csv 函数正在读取 csv header 错误

python - cv2 (cv2.cv2) 中未解析的引用 "cv2"

python - 尝试下载 MNIST 数据时出现 HTTP 错误

linux - 无法解决 TypeError : '>' not supported between instances of 'NoneType' and 'int'

python - 如何用包含字符串值的列表填充 Pandas 数据框列

python - 合并文件夹中的每个数据框