代码之家  ›  专栏  ›  技术社区  ›  J. Doe

从一个表中返回列名,在该表中,可以使用python和pandas找到任何行中的特定值

  •  0
  • J. Doe  · 技术社区  · 6 年前

    表中的值不同。但是,其他行中的其他列中有相同的值(First=Header/Column Name):

    |---------------------|------------------|------------------|
    |          A          |     B            |     C            |
    |---------------------|------------------|------------------|
    |          100        |     200          |     300          |
    |---------------------|------------------|------------------|
    |          400        |     100          |     500          |
    |---------------------|------------------|------------------|
    |          600        |     700          |     800          |
    |---------------------|------------------|------------------|
    

    要打印具有特定值(如100)的所有行,我使用以下python代码:

    import pandas as pd
    
    df = pd.read_excel('test.xlsx', sheet_name='test1')
    
    dfObject = df[df.isin([100]).any(axis=1)]
    
    print(dfObject)
    

    在这样的输出中重用:

    |---------------------|------------------|------------------|
    |          A          |     B            |     C            |
    |---------------------|------------------|------------------|
    |          100        |     200          |     300          |
    |---------------------|------------------|------------------|
    |          400        |     100          |     500          |
    |---------------------|------------------|------------------|
    

    是否有任何方法可以仅打印特定值所在的列名(也可以使用distinct):

    |---------------------|
    |          A          |
    |---------------------|
    |          B          |
    |---------------------|
    
    1 回复  |  直到 6 年前
        1
  •  3
  •   anky    6 年前

    IIUC,使用:

    df.columns[df.eq(100).any()]
    
    #Index(['A', 'B'], dtype='object')
    

    要获得序列输出,请调用 pd.Series() pd.Series(df.columns[df.eq(100).any()])

        2
  •  1
  •   Szymon Maszke    6 年前

    是的,只要用 columns 像这样的属性:

    df[df.isin([100]).any(axis=1)].columns